[英]How do I manually autowire a bean with Spring?
我有一个 bean B
,我必须自己创建它(使用new B()
)并且它有@Autowire
和@PostConstruct
注释。
我如何让 Spring 从我的 bean A
处理这些注释?
相关问题:
Aaron,我相信您的代码是正确的,但我使用了以下内容:
B bean = new B();
AutowireCapableBeanFactory factory = applicationContext.getAutowireCapableBeanFactory();
factory.autowireBean( bean );
factory.initializeBean( bean, "bean" );
第一个方法将处理@Autowire
字段和方法(但不是经典属性)。 第二种方法将调用后处理( @PostConstruct
和任何定义的BeanPostProcessor
)。
如果 bean 实现了ApplicationContextAware
接口,则可以在 bean 中获取应用程序上下文。
另一种选择是让 spring 容器自动创建一个新 bean(而不是使用 new 关键字自己创建一个新实例)。 在需要以编程方式实例化 new 的类中,注入AutowireCapableBeanFactory的实例:
@Autowired
private AutowireCapableBeanFactory beanFactory;
然后:
B yourBean = beanFactory.createBean(B.class);
容器将像往常一样注入用@Autowired 注释的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.