@SpringBootApplication アノテーションの使用

多くの Spring Boot 開発者は、自動構成、コンポーネントスキャンを使用し、「アプリケーションクラス」で追加の構成を定義できるアプリを好みます。単一の @SpringBootApplication アノテーションを使用して、これらの 3 つの機能を有効にできます。

  • @EnableAutoConfiguration: Spring Boot の自動構成メカニズムを有効にする

  • @ComponentScan: アプリケーションが配置されているパッケージで @Component スキャンを有効にします ( ベストプラクティスを見る)

  • @SpringBootConfiguration: コンテキストでの追加の Bean の登録、または追加の構成クラスのインポートを有効にします。統合テストでの構成検出を支援する Spring の標準 @Configuration の代替。

  • Java

  • Kotlin

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// Same as @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
@SpringBootApplication
public class MyApplication {

	public static void main(String[] args) {
		SpringApplication.run(MyApplication.class, args);
	}

}
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication

// same as @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan
@SpringBootApplication
class MyApplication

fun main(args: Array<String>) {
	runApplication<MyApplication>(*args)
}
@SpringBootApplication は、@EnableAutoConfiguration および @ComponentScan の属性をカスタマイズするエイリアスも提供します。

これらの機能はいずれも必須ではなく、この単一のアノテーションを有効にする機能のいずれかに置き換えることもできます。たとえば、アプリケーションでコンポーネントスキャンまたは構成プロパティスキャンを使用したくない場合があります。

  • Java

  • Kotlin

import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Import;

@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import({ SomeConfiguration.class, AnotherConfiguration.class })
public class MyApplication {

	public static void main(String[] args) {
		SpringApplication.run(MyApplication.class, args);
	}

}
import org.springframework.boot.SpringBootConfiguration
import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.docs.using.structuringyourcode.locatingthemainclass.MyApplication
import org.springframework.boot.runApplication
import org.springframework.context.annotation.Import

@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import(SomeConfiguration::class, AnotherConfiguration::class)
class MyApplication

fun main(args: Array<String>) {
	runApplication<MyApplication>(*args)
}

この例では、MyApplication は他の Spring Boot アプリケーションとまったく同じですが、@Component アノテーション付きクラスと @ConfigurationProperties アノテーション付きクラスが自動的に検出されず、ユーザー定義 Bean が明示的にインポートされる点が異なります(@Import を参照)。