我需要在设置bean属性后进行一些初始化工作,
ApplicationContext context = new ...;
AutowireCapableBeanFactory factory = context.getAutowireCapableBeanFactory();
// autowireBean only populate the fields, but never invoke afterPropertiesSet().
factory.autowireBean(bean);
// Should I set it manually?
// if (bean instanceof InitializingBean) {
// ((InitializingBean) bean).afterPropertiesSet();
// }
// if (bean instanceof ApplicationContextAware) {
// ((ApplicationContextAware) bean).setApplicationContext(context);
// }
// if ...
答案 0 :(得分:8)
试试这个:
factory.autowireBean(bean);
bean = (YourBean) factory.initializeBean(bean, "anyName");
它适用于@PostConstruct
(我建议),所以它也应该执行afterPropertiesSet()
。 anyName
是bean名称,可能在涉及BeanNameAware
接口时使用。
答案 1 :(得分:1)
是。文档说该方法自动装配bean,没有别的。
工厂中还有其他方法负责初始化,但它们需要bean定义。