使用 @SpringBootApplication 註解

許多 Spring Boot 開發者喜歡他們的應用使用自動配置、元件掃描,並能在他們的“應用類”上定義額外的配置。一個單獨的 @SpringBootApplication 註解即可啟用這三個特性,它們分別是

  • 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)。