Quería compartir mi solución que sigue el @Configurable
enfoque como se briefly
menciona en la respuesta @ glaz666 porque
- La respuesta de @skaffman tiene casi 10 años, y eso no significa que no sea lo suficientemente bueno o que no funcione
- La respuesta de @ glaz666 es breve y realmente no me ayudó a resolver mi problema, pero sí me indicó la dirección correcta
Mi configuración
- Spring Boot 2.0.3 con
Spring Neo4j & Aop starts
(que de todos modos es irrelevante)
- Instanciar un bean cuando
Spring Boot
esté listo usando el @Configurable
enfoque (usando ApplicationRunner
)
- Gradle & Eclipse
Pasos
Necesitaba seguir los pasos a continuación para que funcione
- El
@Configurable(preConstruction = true, autowire = Autowire.BY_TYPE, dependencyCheck = false)
que se colocará encima de usted Bean
se instanciará manualmente. En mi caso, la Bean
instancia que se va a crear manualmente tiene @Autowired
servicios, por lo tanto, los accesorios de la anotación anterior.
- Anote el
XXXApplicaiton.java
archivo principal de Spring Boot (o el archivo que está anotado @SpringBootApplication
) con el @EnableSpringConfigured
y@EnableLoadTimeWeaving(aspectjWeaving=AspectJWeaving.ENABLED)
- Agregue las dependencias en su archivo de compilación (es decir, build.gradle o pom.xml dependiendo de cuál use)
compile('org.springframework.boot:spring-boot-starter-aop')
ycompile('org.springframework:spring-aspects:5.0.7.RELEASE')
- Nuevo + tu
Bean
que está anotado en @Configurable
cualquier lugar y sus dependencias deben conectarse automáticamente.
* En lo que respecta al punto n. ° 3 anterior, soy consciente de que el tirón de formaorg.springframework.boot:spring-boot-starter-aop
transitiva spring-aop
(como se muestra aquí principalmente ) pero, en mi caso, el Eclipse no pudo resolver las @EnableSpringConfigured
anotaciones, por lo tanto, por qué agregué explícitamente la spring-aop
dependencia además del iniciador. Si enfrenta el mismo problema, simplemente declare la dependencia o emprenda la aventura de descubrir
- ¿Hay un conflicto de versión?
- Por qué
org.springframework.context.annotation.aspect.*
no está disponible
- ¿Su IDE está configurado correctamente?
- Etcétera etcétera.
code
privado @Autowired AnotherBean bean; public void doStuff () {MyBean obj = new MyBean (bean); }code
. Parece ser como con todas estas anotaciones, la gente se confunde mucho y simplemente no usa el patrón básico que estaba en Java SDK desde el día 1. :(