註解(Annotation)
至關於一種標記,在程序中加入註解就等於爲程序打上某種標記,就去幹相應的事,標記能夠加在包、類,屬性、方法,方法的參數以及局部變量上。java
@interface A { }
@A class B { @A String field; @A void method(){ } }
註解能夠加在類、成員變量、成員方法上。web
註解是JDK1.5以後才提供的特性,三個常見註解:spring
@Deprecated
意思是「廢棄的,過期的」@Override
意思是「重寫、覆蓋」@SuppressWarnings
意思是「壓縮警告」首先解釋一下什麼是元註解,元註解就是註解註解的註解。數據庫
提及來有點拗口,能夠這樣理解,看下面的例子:服務器
/** * 這是一個自定義的註解(Annotation)類 在定義註解(Annotation)類時使用了另外一個註解類Retention * 在註解類上使用另外一個註解類,那麼被使用的註解類就稱爲元註解 */ @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.TYPE }) public @interface MyAnnotation { }
這是咱們自定義的註解MyAnnotation
,在咱們自定義的註解註解類中,咱們使用了這兩個註解@Retention
、@Target
,這兩個註解就是元註解——註解(動詞)註解(註解類)的註解(名詞)。websocket
J2SE5.0版本在 java.lang.annotation提供了四種元註解,專門註解其餘的註解:session
略app
首先看一下帶有註解的Java的執行過程,分爲下面三個階段異步
這個@Retention
元註解就是表示註解的生命週期的,他有三個屬性值socket
@Target
元註解決定了一個註解能夠標識到哪些成分上,如標識在在類身上,或者屬性身上,或者方法身上等成分,@Target
默認值爲任何元素
略
用來修飾一個非靜態的void()方法.並且這個方法不能有拋出異常聲明。
被@PostConstruct修飾的方法會在服務器加載Servlet的時候運行,而且只會被服務器調用一次,相似於Serclet的inti()方法。被@PostConstruct修飾的方法會在構造函數以後,init()方法以前運行。
用來修飾一個非靜態的void()方法.並且這個方法不能有拋出異常聲明。
被@PreDestroy修飾的方法會在服務器卸載Servlet的時候運行,而且只會被服務器調用一次,相似於Servlet的destroy()方法。被@PreDestroy修飾的方法會在destroy()方法以後運行,在Servlet被完全卸載以前。
該註解用於監聽器
監聽器類應該實現下面接口之一:
對Request的監聽有ServletRequestListener和ServletRequestAttributeListener。
對Session的監聽有HttpSessionListener和HttpSessionAttributeListener。
對於ServletContext的監聽器有ServletContextListener和ServletContextAttributeListener。
JPA環境下中使用
@MappedSuperclass
註解用在實體類的父類上@MappedSuperclass
標識的類表示其不能映射到數據庫表,由於其不是一個完整的實體類,可是它所擁有的屬性可以讓繼承其的子類映射到數據庫表中@MappedSuperclass
標識得類不能再有@Entity或@Table註解註解標註在父類上不會被子類所繼承 我也僅僅是會用,說的不是太明白
@Component
、@Responsity
、@Service
以及@Controller
;@Autowired
和@Resource
引入該類對象時,並不須要我本身去new一個,spring容器會自動的將我須要對象創造出來。這就是一般所說的依賴注入和控制反轉。泛指組件,當組件很差歸類的時候,咱們可使用這個註解進行標註。通常公共的方法我會用上這個註解
@Scheduled
註解是Spring提供的定時任務調度的註解,該註解註解在方法上,可定義cron表達式定時執行,也可自定義延時時間執行
在使用@Scheduled
註解的時候,要確保已經開啓Spring此功能,開啓此功能只須要將@EnableScheduling
註解到啓動類上便可
在使用spring data jpa的時候,每一個實體類有須要實現的相同的方法,就能夠單獨抽取出來,放在一個公共的接口MyRepository中,並這個類繼承了jpa的相關Repository接口或類,由MyRepository接口來銜接jpa的相關操做,其餘實體類須要實現的操做就直接繼承MyRepository接口,不用每次都去繼承jpa的相關接口或類啦,因此這個公共接口就須要這個註解@NoRepositoryBean來標識。
Dao層的註解,若是繼承了相關的Repository或者配置了bean寫不寫均可以
@EnableWebSocketMessageBroker註解用於開啓使用STOMP協議來傳輸基於代理(MessageBroker)的消息,這時候控制器(controller)開始支持@MessageMapping,就像是使用@requestMapping同樣。
註解@EnableJms設置在@Configuration類上,用來聲明對 JMS 註解的支持。
註解在配置類上, 開始異步任務支持
註解在類或者方法上, 來聲明一個異步任務
定義Spring容器加載Bean的順序
websocket的@RequestMapping
用於類;表示標識這個類是swagger的資源
用於方法;表示一個http請求的操做
用於方法,參數,字段說明;表示對參數的添加元數據(說明或是否必填等)
用於類 ;表示對類進行說明,用於參數用實體類接收
均可省略
用於方法,字段; 表示對model屬性的說明或者數據操做更改
用於類或者方法上,能夠不被swagger顯示在頁面上
用於方法 表示單獨的請求參數
用於方法,包含多個 @ApiImplicitParam