我有这个HTTP侦听器子类
public class MigificSessionListener implements HttpSessionListener {
@Autowired
@Qualifier("notificationThread")
private NotificationThread notificationThread;
@Override
public void sessionDestroyed(HttpSessionEvent hse) {
// here notificationThread value is null
}
}
notificationThread
内sessionDestroyed()
的值为null
。
如何在此课程中自动装配sessionDestroyed
?
答案 0 :(得分:3)
你的MigificSessionListener
不在春天的情境中,春天的事件不知道它存在。
您可以使用WebApplicationContextUtils
从ServletContext
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 {
}