開発者ドキュメント

春のブートアノテーション

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で利用可能]にあります。




  • «** 前へ

モバイルバージョンを終了