2016-07-20 8 views
6

私は新しいスターターを作成しようとしています。 @Componentでアノテートされたいくつかのクラスを含むビジネスモジュール、たとえばProjectManagerがあります。チュートリアルの後、私は自動構成モジュールを作成しました。自動構成モジュールは自動構成クラスを含んでいます。まず、@ComponentSanを使用してビジネスモジュール内のBeanを見つけようとしました。@ComponentScanはSpringブート自動構成クラスでは機能しませんか?

@ComponentScan(value = {"com.foo.project"}) 
@ConditionalOnClass({Project.class}) 
@Configuration 
public class ProjectAutoConfiguration { 
    .... 

} 

しかし、動作しません。以下のような自動構成クラスにそれを

@Configuration 
@ComponentScan(value = {"com.foo.project"}) 
@MapperScan(value = {"com.foo.project"}) 
public class ProjectConfig { 
} 

[インポート:私は以下のように追加の設定クラスを追加する必要が働く

@Import(ProjectConfig.class) 
@ConditionalOnClass({Project.class}) 
@Configuration 
public class ProjectAutoConfiguration { 
    .... 

} 

を。しかし、春によるとdoc

自動設定は@ComponentScanはここで働いていないのはなぜだから私の質問は、ある標準@Configurationクラス

で実装されていますか?私は何か間違ったことをしましたかそれとも、それは設計によるのですか?

答えて

6

メインクラスには、compentscanアノテーションを使用する必要があります。ここではサンプルコード:

@SpringBootApplication 
@ComponentScan("com.foo.project") 
public class MainApplication extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(MainApplication.class); 
    } 

    public static void main(String[] args) { 
     new MainApplication().configure(new SpringApplicationBuilder(MainApplication.class)).run(args); 
    } 
} 

乾杯

+0

参照してください? – Dongqing

+0

はい。このようなメインクラスを編集してください。 – emoleumassi

+0

メインクラスに追加するように機能します。だから、@ComponentScanは春の起動時にメインクラスでしか動作しないのですか? – Dongqing

0

次を試すことはできますか?

@ConditionalOnClass({Project.class}) 
@Configuration 
@EnableAutoConfiguration 
@ComponentScan(value = {"com.foo.project"}) 
public class ProjectAutoConfiguration { 
    .... 

} 
+0

メインクラスに既に@ EnableAutoConfigurationが追加されています – Dongqing

3

自動すべては、スキャンしたいコンポーネントよりも「高い」のパッケージにあるように(@SpringBootApplicationで注釈さ)Applicationクラスが必要です。

使用:アプリケーションの

package com.example.foo; 

などのパッケージにコンポーネントを置く:

package com.example.foo.entities; 

、あなたが意味もmainメソッドを持つクラスをhttps://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-using-springbootapplication-annotation.html

関連する問題