@Configuration
内に@Configuration
を定義し、これらはすべてstatic
である自動コンフィグレーションクラスを見てきました。彼らはなぜ静的でなければならないのですか?それは良い方法ですか?@Controllerまたは@Configuration内のコンフィグレーション
@Configuration
@Component
クラスとスタンドアロン@Configuration
クラスの間で定義されている違いは何ですか?
@Configuration
内に@Configuration
を定義し、これらはすべてstatic
である自動コンフィグレーションクラスを見てきました。彼らはなぜ静的でなければならないのですか?それは良い方法ですか?@Controllerまたは@Configuration内のコンフィグレーション
@Configuration
@Component
クラスとスタンドアロン@Configuration
クラスの間で定義されている違いは何ですか?
あなたの答えを見つけるためにWebMvcAutoConfiguration
ためsource codeでWebMvcAutoConfigurationAdapter
の定義を見てみましょう:
// 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のコンポーネントスキャンを防ぐために、ネストされた静的クラスとして定義されています適切な注釈が使用されていない場合は自動的に表示されます。したがって、設定クラスを毎回使用することが期待される場合はスタンドアロンクラスとして、クラスパススキャンから分離する場合はネストされた静的クラスとして、設定クラスを定義するのがよいでしょう。