1.概要
Spring Bootは自動設定機能を使ってSpringの設定を簡単にしました。
このクイックチュートリアルでは、
org.springframework.boot.autoconfigure
および
org.springframework.boot.autoconfigure.condition
パッケージからのアノテーションを調べます。
2.
@ SpringBootApplication
この注釈を使って、Spring Bootアプリケーションのメインクラスをマークします。
@SpringBootApplication
class VehicleFactoryApplication {
public static void main(String[]args) {
SpringApplication.run(VehicleFactoryApplication.class, args);
}
}
@ SpringBootApplication
は、
@ Configuration
、
@ EnableAutoConfiguration
、および
@ ComponentScan
のアノテーションをデフォルトの属性でカプセル化します。
3.
@ EnableAutoConfiguration
@ EnableAutoConfiguration
は、その名前のとおり、自動構成を有効にします。つまり、
Spring Bootはクラスパス上で自動設定Bean
を探し、それらを自動的に適用します。
このアノテーションを
@ Configuration
と共に使用する必要があることに注意してください。
@Configuration
@EnableAutoConfiguration
class VehicleFactoryConfig {}
4.自動設定条件
通常、私たちが
カスタムの自動設定
を書くとき、私たちはSpringに
それらを条件付きで使用させたい
。このセクションのアノテーションでこれを達成できます。
このセクションの注釈は、
@ Configuration
クラスまたは
@ Bean
メソッドに配置できます。
次のセクションでは、各条件の背後にある基本概念のみを紹介します。詳細については、リンク:/spring-boot-custom-auto-configuration[この記事]を参照してください。
4.1.
@ ConditionalOnClass
および
@ ConditionalOnMissingClass
これらの条件を使用して、注釈の
引数のクラスが存在する/存在しない
の場合に限り、Springはマークされた自動設定Beanを使用します。
@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoconfiguration {
//...
}
4.2.
@ ConditionalOnBean
および
@ ConditionalOnMissingBean
特定のBeanの有無に基づいて条件を定義するときに、これらのアノテーションを使用できます。
@Bean
@ConditionalOnBean(name = "dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
//...
}
4.3.
@ ConditionalOnProperty
このアノテーションを使用して、プロパティの値に条件を設定できます。
@Bean
@ConditionalOnProperty(
name = "usemysql",
havingValue = "local"
)
DataSource dataSource() {
//...
}
4.4.
@ ConditionalOnResource
特定のリソースが存在する場合にのみSpringに定義を使用させることができます。
@ConditionalOnResource(resources = "classpath:mysql.properties")
Properties additionalProperties() {
//...
}
4.5.
@ ConditionalOnWebApplication
および
@ ConditionalOnNotWebApplication
これらのアノテーションを使用して、現在のアプリケーションがWebアプリケーションかどうかに基づいて条件を作成できます。
@ConditionalOnWebApplication
HealthCheckController healthCheckController() {
//...
}
4.6.
@ ConditionalExpression
この注釈はもっと複雑な状況でも使用できます。 Springは** SpEL式がtrueと評価されたときにマークされた定義を使用します。
@Bean
@ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}")
DataSource dataSource() {
//...
}
4.7.
@条件付き
さらに複雑な条件では、
カスタム条件
を評価するクラスを作成できます。 Springにこのカスタム条件を
@ Conditional
で使用するように指示します。
@Conditional(HibernateCondition.class)
Properties additionalProperties() {
//...
}
5.まとめ
この記事では、自動構成プロセスをどのように微調整し、カスタム自動構成Beanの条件を提供するかについて概要を説明しました。
いつものように、例はhttps://github.com/eugenp/tutorials/tree/master/spring-boot-mvc[GitHubで利用可能]にあります。
次
”
-
«** 前へ