2016-04-11 4 views
2

@Configuration内に@Configurationを定義し、これらはすべてstaticである自動コンフィグレーションクラスを見てきました。彼らはなぜ静的でなければならないのですか?それは良い方法ですか?@Controllerまたは@Configuration内のコンフィグレーション

@Configuration@Componentクラスとスタンドアロン@Configurationクラスの間で定義されている違いは何ですか?

答えて

0

あなたの答えを見つけるためにWebMvcAutoConfigurationためsource codeWebMvcAutoConfigurationAdapterの定義を見てみましょう:

// Defined as a nested config to ensure WebMvcConfigurerAdapter is not read when not 
// on the classpath 
@Configuration 
@Import(EnableWebMvcConfiguration.class) 
@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class }) 
public static class WebMvcAutoConfigurationAdapter extends WebMvcConfigurerAdapter { 
    ... 
} 

自動構成クラスはそれらを拾ってからSpringのコンポーネントスキャンを防ぐために、ネストされた静的クラスとして定義されています適切な注釈が使用されていない場合は自動的に表示されます。したがって、設定クラスを毎回使用することが期待される場合はスタンドアロンクラスとして、クラスパススキャンから分離する場合はネストされた静的クラスとして、設定クラスを定義するのがよいでしょう。

関連する問題