繁体   English   中英

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为'eventpublisher'的bean

[英]org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'eventpublisher' available

我有一个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();
    }

作为记录在这里

Spring按照上述规则为未命名的组件生成Bean名称:本质上, 采用简单的类名称并将其初始字符转换为小写

因此,当拥有通过组件扫描检测到的EventPublisher类时,所得的bean名称将为eventPublisher

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM