Digamos que tenemos una clase:
public class MyClass {
@Autowired private AnotherBean anotherBean;
}
Luego creamos un objeto de esta clase (o algún otro marco ha creado la instancia de esta clase).
MyClass obj = new MyClass();
¿Es posible inyectar todavía las dependencias? Algo como:
applicationContext.injectDependencies(obj);
(Creo que Google Guice tiene algo como esto)
java
spring
dependency-injection
Igor Mukhin
fuente
fuente

codeprivado @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. :(También puede marcar su MyClass con la anotación @Configurable:
Luego, en el momento de la creación, inyectará automáticamente sus dependencias. También debe tener
<context:spring-configured/>en su aplicación el contexto xml.fuente
<context:spring-configured/>?Acabo de tener la misma necesidad y en mi caso ya era la lógica dentro de la clase Java no manejable de Spring a la que tenía acceso
ApplicationContext. Inspirado en scaffman. Resuelto por:fuente
Quería compartir mi solución que sigue el
@Configurableenfoque como sebrieflymenciona en la respuesta @ glaz666 porqueMi configuración
Spring Neo4j & Aop starts(que de todos modos es irrelevante)Spring Bootesté listo usando el@Configurableenfoque (usandoApplicationRunner)Pasos
Necesitaba seguir los pasos a continuación para que funcione
@Configurable(preConstruction = true, autowire = Autowire.BY_TYPE, dependencyCheck = false)que se colocará encima de ustedBeanse instanciará manualmente. En mi caso, laBeaninstancia que se va a crear manualmente tiene@Autowiredservicios, por lo tanto, los accesorios de la anotación anterior.XXXApplicaiton.javaarchivo principal de Spring Boot (o el archivo que está anotado@SpringBootApplication) con el@EnableSpringConfiguredy@EnableLoadTimeWeaving(aspectjWeaving=AspectJWeaving.ENABLED)compile('org.springframework.boot:spring-boot-starter-aop')ycompile('org.springframework:spring-aspects:5.0.7.RELEASE')Beanque está anotado en@Configurablecualquier 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 forma
org.springframework.boot:spring-boot-starter-aoptransitivaspring-aop(como se muestra aquí principalmente ) pero, en mi caso, el Eclipse no pudo resolver las@EnableSpringConfiguredanotaciones, por lo tanto, por qué agregué explícitamente laspring-aopdependencia además del iniciador. Si enfrenta el mismo problema, simplemente declare la dependencia o emprenda la aventura de descubrirorg.springframework.context.annotation.aspect.*no está disponiblefuente