2017-05-08 5 views
2

私はSpringブートアプリケーションを持っています。 @Componentアノテーションを付けたプロジェクトのクラスに注釈を付けました。今私のメインクラスで、クラスのBeanを取得しようとしているときに、Beanを見つけることができなかったという例外があります。org.springframework.beans.factory.NoSuchBeanDefinitionException: 'eventpublisher'という名前の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.spring[email protected]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(); 
    } 
+3

クラス名から小文字の最初の文字でBean名が生成されます。したがって、 'EventPublisher'は' eventPublisher'ではなく 'eventpublisher'になります。 –

+0

ありがとうございます。どうもありがとう。 – DP3

+0

@ M.Deinum多分あなたはそれを答えとして加えるべきです。あなたはちょうど私の問題を解決しました。もしあなたが少なくともあなたをアップフォートすることができたら、それは素晴らしいでしょう。 –

答えて

0

文書here

スプリングが上記規則に従って名前のコンポーネントのビーン名を生成するように:本質的には単純なクラス名をとるので、部品走査得Bean名によって検出されたクラスEventPublisherを有する場合がeventPublisherなり小文字

にその最初の文字を回します。

関連する問題