以下是我想要接收的两个对象ContextRefreshedEvent
@Component
public class InitDB {
@EventListener
public void handleContextRefresh(ContextRefreshedEvent e) {
//
}
}
InitDB按预期工作,但在这种情况下不是:
@Service
public class MyService implements IMyService{
@Autowired
private MyDao _dao; // Autowired WORKs
@EventListener
public void handleContextRefresh(ContextRefreshedEvent e) {
// DON'T WORK
}
[...]
}
任何想法我做错了什么?
这是我的maven属性
<properties>
<java-version>1.7</java-version>
<org.springframework-version>4.2.2.RELEASE</org.springframework-version>
<spring-security-web-version>3.2.5.RELEASE</spring-security-web-version>
<org.aspectj-version>1.7.2</org.aspectj-version>
<org.slf4j-version>1.5.10</org.slf4j-version>
<hibernate-version>4.3.6.Final</hibernate-version>
<json-jackson-version>2.4.1</json-jackson-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<skipTests>true</skipTests>
</properties>
答案 0 :(得分:0)
我遇到了同样的问题,对我来说,事实证明我的监听器bean没有被Spring加载到依赖项中。
如果您使用Spring Boot Actuator,则可以在https://localhost:8443/beans检查已加载的bean。
Spring没有检测到bean,因为我有一个名称空间错误。我的主命名空间是 com.foo (包括com.foo.security和com.foo.controllers等包),当我添加新的包日志时,我在命名空间中引入了一个拼写错误:融为一体的˚F强> foo.logging
因此,Spring无法找到我正在添加的新组件/服务。
对于这个特定问题,如果用@Service注释它并不重要,因为@Service是@Component的子类(参见post)