【发布时间】:2017-10-06 14:19:31
【问题描述】:
我有一个 Spring Boot 应用程序。我用@Component 注释对项目的一个类进行了注释。现在在我的主类中,当我试图获取类的 bean 时,我得到一个异常,它无法找到 bean。
Exception in thread "main" [2m2017-05-08 09:53:55.303[0;39m [32m INFO[0;39m [35m9112[0;39m [2m---[0;39m [2m[ Thread-2][0;39m [36ms.c.a.AnnotationConfigApplicationContext[0;39m [2m:[0;39m Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@4df828d7: startup date [Mon May 08 09:53:54 EDT 2017]; root of context hierarchy
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'eventpublisher' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1081)
at com.fannie.SpringEventGenerationJBsApplication.main(SpringEventGenerationJBsApplication.java:17)
我被注释为组件的类正在关注
@Component
public class EventPublisher implements ApplicationEventPublisherAware {
@Autowired
private ApplicationEventPublisher publisher;
public void eventpublishers() {
ActualEvent actualEvent = new ActualEvent(this);
System.out.println(actualEvent);
publisher.publishEvent(actualEvent);
}
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
}
@SpringBootApplication
@ComponentScan(basePackages = {"com.fannie"})
public class SpringEventGenerationJBsApplication {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(SpringEventGenerationJBsApplication.class, args);
EventPublisher ep = (EventPublisher) context.getBean("eventpublisher");
ep.eventpublishers();
}
【问题讨论】:
-
bean 名称是从类名生成的,第一个字符是小写的...所以
EventPublisher将变为eventPublisher而不是eventpublisher。 -
谢谢你的作品。非常感谢。
-
@M.Deinum 也许您应该将其添加为答案。你刚刚解决了我的问题,如果我能至少给你点个赞,那就太好了。
-
@DP3 请接受
@M.Deinum写的答案。它对我和你都有效。 :)
标签: java spring spring-boot