使用Spring在ServletContextListener中注入静态属性

时间:2012-12-12 16:06:31

标签: spring dependency-injection static-members servlet-listeners

我需要将静态属性注入我的一个侦听器类

首先我查了一下 Spring - Injecting a dependency into a ServletContextListener。但是它不适用于静态属性。 然后我混合了http://planproof-fool.blogspot.be/2010/03/spring-setting-static-fields.html仍然无法进行注射。

这是我的简短代码

public class MyListener implements ServletContextListener {

    private static Logger logger = Logger.getLogger(MyListener.class);
    private static ServletContext context = null;
    @Autowired
    private static Repository repository;
}

的applicationContext.xml

<import resource="classpath*:spring/modelContextDump.xml" />

    <!-- Scan for @Autowired annotations -->
    <context:annotation-config />

    <bean id="propertiesUtil"
        class="com.my.utils.PropertiesUtil">
        <property name="locations">
            <list>
                <value>classpath:config.properties</value>
            </list>
        </property>
    </bean>

和在modelContext文件中

<bean id="repository"
    class="com.my.repository.RepositoryImpl"
    parent="abstractRepository">
</bean>

从功能上讲,此侦听器类将永远运行(infinte-time)并访问存储库属性。

1 个答案:

答案 0 :(得分:1)

根据http://planproof-fool.blogspot.be/2010/03/spring-setting-static-fields.html

的建议

这不适合你吗?

private static Repository repository;

@Autowired(required = true)
private setStaticRepo(Repository localRepo ) {
    repository = localRepo;
}