2016-09-12 7 views
0

は、私は私の知る限りでは、コンポーネントスキャンスキャン豆は、私が間違っていないよ場合@Component, @Service, @Repository, @Controllerの一つですクラスはステレオタイプ@SpringBootApplicationクラスで宣言されたBeanがステレオタイプのクラスではないのに登録されているのはなぜですか?

@SpringBootApplication 
@EnableOAuth2Sso 
public class App 
{ 
    public static void main(String[] args) throws Exception { 
     SpringApplication.run(App.class, args);  
    } 

    @Bean public RequestContextListener requestContextListener(){ 
     return new RequestContextListener(); 
    } 

} 

私のプロジェクトでは、このメインクラスをしています。デフォルトでは春のドキュメント

から

、@Component、@Repository、@Service、 @Controller、またはそれ自体が @Componentでアノテートされたカスタムアノテーションを付けたクラスのみが検出された候補コンポーネントです。

このクラスのBeanの登録方法を理解できません。ステレオタイプのクラスではなく、注釈に@Componentという注釈が付いていないため、最初はスキャンしないでくださいが、このコードは完全に機能します。私の問題が解決された唯一の方法は、このクラスのBeanを使用している私の使用事例でしたが、それは別のものです。誰でもこれを説明できますか?ありがとう!!

答えて

5

@SpringBootApplicationは次のようになりますメタ注釈です:

// Some details omitted 
@SpringBootConfiguration 
@EnableAutoConfiguration 
public @interface SpringBootApplication { ... } 

@SpringBootConfigurationもメタ注釈です:

// Other annotations 
@Configuration 
public @interface SpringBootConfiguration { ... } 

そして@Configurationです:

// Other annotations 
@Component 
public @interface Configuration { ... } 

それはので動作します:

デフォルトでは10

、それ自体が @Componentと注釈されている@Component、@Repository、@Service、 @Controller、又はカスタムアノテーションを付けたクラスのみが検出された候補成分です。

+1

答えてくれてありがとう、私は@Componentがあった信じることができない、私はすべての注釈を確認し、私はそれを逃したかを理解することはできません。まだ助けてくれてありがとう! – varunkr

2

@SpringBootApplicationは、@Configuration注釈としても機能するためです。

@Configurationは、xmlスプリングコンフィグレーションファイルのように定義Beanを作成するために使用されます。

Bean構成クラスを使用できます。

@Configuration 
class MyConfiguration{ 
@bean MyBean myBean(){...}; 
} 

あなたはあなたがより多くのここ

見ることができます @SpringBootApplication

を使用しているとして、あなたはSpring構成クラスをunsingしている、あなたの場合は

<beans> 
    <bean id="myBean" class="MyBean" /> 
</beans> 

Spring構成ファイルを持つことができますoを

http://www.tutorialspoint.com/spring/spring_java_based_configuration.htm

http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/SpringBootApplication.html

http://docs.spring.io/spring/docs/4.2.1.RELEASE/javadoc-api/org/springframework/context/annotation/Configuration.html

+0

助けてくれてありがとう、はい、私は何とかすべての注釈を見ても、メタ注釈を見逃しました。答えをありがとう、私はそれをupvotedが、すでに最初のものを受け入れた。 – varunkr

関連する問題