Spring - 在ApplicationContextInitializer实现中自动装配

时间:2016-02-10 18:15:06

标签: spring spring-mvc autowired

我有一个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>

1 个答案:

答案 0 :(得分:0)

最近我遇到了同样的陷阱。我试图在ApplicationContextInitializer内无法使用无法工作的属性。 症状是我在启动时的应用程序只将横幅打印到控制台然后静默退出。原因是NullPointerException方法内部引发了initialize,因为我的属性为null。虽然NPE在我的案例中是一个特定于代码的问题,但它表明Spring没有处理@Autowire注释,因为如果是这样,Spring应该在初始化时失败,因为缺少bean定义匹配我的属性而不是注入null。

简而言之:Spring不会对ApplicationContextInitializer执行自动装配。