La idea es crear un proyecto spring boot, con Clojure y Leiningen. (ya lo dice el titulo)
Primero hacemos un proyecto hello word con Leiningen (ojo tienen que tener Leiningen instalado, esta bueno instalarlo con sdkman, así : sdk install leiningen)
lein new app ejemplo
Luego agregamos las dependencias de spring boot al proyecto, para que quede algo así:
Y ahora hacemos un endpoint, en este ejemplo voy a hacer un hola mundo :
(ns com.assembly.exanple.controller.greet
(:import (org.springframework.web.bind.annotation PathVariable RequestMapping RequestMethod RestController)
(org.springframework.http ResponseEntity))
)
(gen-class
:name ^{RestController {}
RequestMapping {:value ["/v1/greet"]}} com.assembly.exanple.controller.greet.GreeterEndPoint
:methods [[^{RequestMapping {:value ["/hello"]
:method [RequestMethod/GET]}} sayHello [] Object ]
[^{RequestMapping {:value ["/helloto/{name}"]
:method [RequestMethod/GET]}} sayHelloTo [^{PathVariable {:value "name"}} String] Object ]
]
:state injected
:init init
)
(defn -init
"Initialize the class by setting the state to an empty map, which can be populated with injected dependencies."
[]
[[] (atom {})])
(defn -sayHello
[this]
(ResponseEntity/ok "Hello"))
(defn -sayHelloTo
[this name]
(ResponseEntity/ok (str "Hello " name)))
Y listo, si corremos el main, vamos a levantar el tomcat embebido de spring y vamos a :
http://localhost:8080/v1/greet/hello
y veremos como nos saluda spring boot con clojure!!