Spring:在非spring类中自动装配

时间:2014-11-14 07:28:27

标签: spring spring-mvc

我有这个HTTP侦听器子类

public class MigificSessionListener implements HttpSessionListener {
    @Autowired
    @Qualifier("notificationThread")
    private NotificationThread notificationThread;  

    @Override
    public void sessionDestroyed(HttpSessionEvent hse) {
          // here notificationThread value is null
    }
}

notificationThreadsessionDestroyed()的值为null

如何在此课程中自动装配sessionDestroyed

3 个答案:

答案 0 :(得分:3)

你的MigificSessionListener不在春天的情境中,春天的事件不知道它存在。 您可以使用WebApplicationContextUtilsServletContext

获取春季背景信息

WebApplicationContextUtils.getWebApplicationContext(sessionEvent.getSession().getServletContext())

答案 1 :(得分:0)

通过使用@Configurable注释,将非Spring托管类MigificSessionListener转换为Spring托管类<context:spring-configured/>

要识别此注释,您需要在Spring XML配置中使用@EnableSpringConfigured,或者如果您使用的是Spring Java配置,则需要@Autowired

然后{{1}}或注入其他依赖项将成功。

答案 2 :(得分:0)

您可以使用@EnableSpringConfigured启用Spring AOP,并使用@Configurable注释您的班级。这让spring管理在spring {4}之外创建的实例。您还需要启用load-time weaving或编译时编织。这在9.8.1 Using AspectJ to dependency inject domain objects with Spring中有记录。

new

@Configuration
@EnableSpringConfigured
public class AppConfig {

}