註釋(Annotations) 是Java 5.0 加入的新功能,它強化了程式註解與Javadoc 文件註解的功能,使其更有強制力,並用來歸納各種條件陳述的變化,使開發人員更能掌握語法規則,以下程式進行講解。
// 假設有一個Animal 類別
public class Animal {
public void move() {
System.out.println("Move");
}
}
// 制定一個Dog 類別繼承Animal 並覆寫move() 方法
public class Dog extends Animal {
public void move() {
System.out.println("亂跑亂跳");
}
}
// 以上是正常且合法的作法,但如果將move() 方法寫成以下程式碼
public class Cat extends Animal {
public void moving() {
System.out.println("跑一跑跳一跳");
}
}
Cat 類別應該要覆寫的是move() 方法,卻誤寫成moving() 方法,雖然該程式仍然可以正常編譯與執行,然而覆寫才是我們的目的,但在Java 編譯與執行時,Java 編譯器並不會知道程式設計師是希望覆寫move() 方法。
為了解決上述問題,可以在moving() 方法上加入@Override 的註解,moving() 就變成一個被標註的覆寫方法,該註解是表示該方法的目的是覆寫父類別的方法,覆寫時可能沒注意到但會由Annotation 機制提醒,透過Java 編譯就會取得錯誤訊息。
public class Cat extends Animal {
@Override
public void moving() {
System.out.println("跑一跑跳一跳");
}
}
// 錯誤訊息
// method does not override a method from its superclass.
Java 已經在java.lang 套件中定義好三個標準註釋,分別為Override、Deprecated 和SuppressWarnnings。
@Override
: 表示此方法覆寫了父類別的方法。@Deprecated
: 表示此方法已經過時。@SuppressWarnnings
: 告訴編譯器忽視某類別編譯警告。
// 告訴編譯器忽略unchecked 警告訊息
@SuppressWarnnings("unchecked")
// 告訴編譯器忽略unchecked 和deprecation 警告訊息
@SuppressWarnnings("unchecked", "deprecation")
// 相當於@SuppressWarnnings("unchecked", "deprecation")
@SuppressWarnnings(value = {"unchecked", "deprecation"})
Spring Boot 的核心註釋是啟動類上的@SpringBootApplication
註釋,它主要包含了以下三個註釋,實現聲明一個或多個Bean 並啟動自動配置和組件掃描的註釋 :
@SpringBootConfiguration
: 組合了@Configuration
註釋,實現配置檔案的功能。@EnableAutoConfiguration
: 開啟自動配置的功能,也可以關閉某個自動配置的選項,如想要關閉資料來源自動配置功能,@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
。@ComponentScan
: 用來掃描元件並裝配一些Bean,會根據定義的掃描路徑把符合掃描規則的類別裝配到Spring 容器中。以下是預設的@SpringBootApplication
註釋的內容。
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication
Java注解 - 维基百科,自由的百科全书
SpringBootApplication (Spring Boot 2.5.6 API)