Inyectar un servicio Groovy Grails en una clase Java
service dependency-injection (3)
El enfoque recomendado es extraer el servicio Grails en una interfaz y luego insertar este servicio en su clase java a través de Spring. Consulte la guía del usuario - http://www.grails.org/doc/1.3.x/guide/8.%20The%20Service%20Layer.html#8.4%20Using%20Services%20from%20Java
Tengo un servicio Grails implementado en Groovy, que me gustaría incluir en una clase Java, en la aplicación web. Sé que puedo obtener el bean en Java a través de applicationContext.getBean ("exampleService"), pero el tipo ExampleService es desconocido en tiempo de compilación.
¿Puedo simplemente importar el servicio? No parece declarar un paquete típico.
(Soy bastante nuevo en Grails y en la Web de Java, por lo que cualquier cosa que me ayude a comprender lo que ocurre detrás de escena es muy apreciada).
Siguiendo con lo que Dónal dijo, puedes conectar la clase Java como un bean en resources.groovy
Por ejemplo, supongamos que el nombre de su clase Java es JavaClass, y está ubicado en algún lugar de su carpeta src. Vaya a resources.groovy y agregue lo siguiente a sus beans ...
beans = {
...
javaClass(JavaClass) {
exampleService = ref(''exampleService'')
}
}
Ahora debería poder acceder a exampleService dentro de su clase Java como un bean regular.
def exampleService
Sin embargo, tenga en cuenta que si está utilizando algo así como intellij, es posible que el pequeño icono de frijol no aparezca junto a él. Esto es normal. Además, no olvides importar JavaClass en resources.groovy
Si desea inyectar el servicio Grails en la clase Java sin utilizar applicationContext.getBean("exampleService")
, la clase Java debe ser un bean de Spring, y debe unir los dos en resources.groovy
o resources.xml
.
Si lo anterior no tiene mucho sentido para usted, es posible que desee leer sobre los conceptos básicos de la inyección de dependencia de primavera.