我有一个ApplicationContextInitializer,用于初始化某些应用程序属性。我试图将spring的ResourceLoader和一个restclient自动装入它,但不能。是否可以在ApplicationContextInitializer实现中自动装配?
@Component
public class MyApplicationContextInitializer implements
ApplicationContextInitializer<ConfigurableApplicationContext> {
@Autowired
private ResourceLoader resourceLoader;
@Autowired
private MyRestClient restClient;
// some init methods
}
我的autowired.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"
default-lazy-init="true">
<context:property-placeholder/>
<context:annotation-config />
<context:component-scan base-package="com.package.containing.classes" />
</beans>
答案 0 :(得分:0)
最近我遇到了同样的陷阱。我试图在ApplicationContextInitializer
内无法使用无法工作的属性。
症状是我在启动时的应用程序只将横幅打印到控制台然后静默退出。原因是NullPointerException
方法内部引发了initialize
,因为我的属性为null。虽然NPE在我的案例中是一个特定于代码的问题,但它表明Spring没有处理@Autowire
注释,因为如果是这样,Spring应该在初始化时失败,因为缺少bean定义匹配我的属性而不是注入null。
简而言之:Spring不会对ApplicationContextInitializer
执行自动装配。