你可以将一个弹簧豆注入一个不直接在弹簧容器中的类吗?

时间:2017-05-25 19:59:17

标签: java spring

很抱歉,如果这个问题听起来很模糊,但我会尝试添加一些清晰度。

如果我有类关联,如下所示。

A -> B -> C -> D

A类是通过spring bean配置创建的,但是B,C& D在弹簧容器外部创建,例如直接在代码中创建。如果我想将新bean连接到D类,我可以在D中使用@Inject批注,然后在spring bean配置中创建一个关联的@Bean定义,该定义创建A或者因为B,C& D不是春天豆不起作用吗?

2 个答案:

答案 0 :(得分:1)

您可以使用new B();创建对象,并通过Spring注入依赖托管

假设A实例由Spring容器管理,B看起来像:

public class B {

  @Autowire
  private A a;
...
}

...
B b = new B();
...

如果您想使用B的{​​{1}} Spring@Autowire中注入依赖项:

  • 使用以下代码注释课程B@Configurable(dependencyCheck = true)
  • 使用Java代理运行Java进程:java -javaagent:<path to spring-agent-${spring.version}.jar> ...

答案 1 :(得分:0)

我没有对此进行测试,但您可能很幸运使用AutowireBeanCapableFactory#autowire方法

可以从ApplicationContext

访问Bean工厂