本文只列出spring boot應用中一些常用的註解,沒有對註解的原理和用法做詳細說明。如果你需要詳細了解註解,請查閱官方文件。
一般作用在方法上,產生乙個spring的bean物件。@bean常用的註解引數有name和value, value是引數name的別名。bean的名稱可以通過指定value或name來確定,如果未指定,bean名就是方法名。
@service表示業務元件,可以作用在任何層上。申明在類上,標註此類交給spring ioc管理。@service註解有乙個屬性value,可以通過value來指定在springioc容器中的bean名稱,如果未指定,bean名稱預設是類名(頭字母小寫)。
@component泛指元件。用法和@service一致,主要區別是在語義上,當類不好進行歸類時可以使用@component註解進行標註。
標註在資料訪問層dao的類名上,用法和上述的@service和@ @component一致。但是不能標註在其它層,因為它不僅將該類標識為springioc bean, 它還能將所標註的類中丟擲的資料訪問異常封裝為 spring 的資料訪問異常型別。
標註在類上,表示該類是spring的控制器,在springmvc中,控制器controller 負責處理由dispatcherservlet 分發的請求。@restcontroller和@controller的區別是,@restcontrlller註解預設加上了@responseboby註解。
標註在類上,表示此類是乙個配置類,被註解的類內部包含有乙個或多個被@bean註解的方法。被@configuration註解的類不可以是final類,不可以是匿名類,巢狀時必須是靜態類。
標註的非靜態的void方法上,影響bean的生命週期。被@postconstruct修飾的方法會在伺服器載入bean的時候執行,並且只會被伺服器執行一次。postconstruct在建構函式之後執行,init()方法之前執行。predestroy()方法在destroy()方法執行執行之後執行。
匯入資源。可以匯入未被spring boot掃瞄到的類,也可以匯入配置類。
載入指定的屬性檔案(*.properties或*.yml)到 spring 的 environment 中。
標註在成員變數上。可以把自定義的屬性注入到被該註解的成員變數上。
標註在類上,可以自動把自定義的屬性注入到該類中名稱相同的成員變數上。指定字首。
用來指定spring掃瞄的包路徑,spring會把載入此包和它所有的子包下面所有bean。
延遲載入bean,設定為延遲載入的bean只有在被呼叫的時候才會去初始化。主要作用是減少springioc容器啟動的載入時間,在有迴圈依賴時也可以使用該註解。
環境標識,標註了該註解的bean,只有在指定的環境的才會被載入。不指定時任何環境都會載入。如在配置類上,作用與配置裡面所有的bean。
bean的作用域,有singleton,prototype、request、session、global session,預設是singleton。singleton表示單例,全域性有且僅有乙個例項。prototype每次獲取bean都會新建乙個例項。request表示每乙個http request請求都會生成乙個例項,該例項僅在當前的http請求中有效。session同request類似,作用域是http session中。global session同session類似,不過它僅僅在基於portlet的web應用中才有意義。
用來標識當前bean依賴另乙個bean,所依賴的bean會被容器確保在當前bean例項化之前被例項化。
用來定義一系列bean的執行順序,比如filter,aop等。不是用來定義bean的載入順序的,bean的載入順序和它沒有任何關係。
當乙個介面有多個實現類時,並且都注入到了springioc容器中,使用@autowired注入時就不知道選擇哪乙個。如果其中乙個實現類使用了@primary,@autowired就會優先考慮該bean注入。
表示該bean只有在滿足特定的條件後才會被載入。spring提供了一些預設的conditional類
可以對類成員變數,setter方法,建構函式進行標註,完成自動裝配。主要用來消除setter/getter方法。
當建立多個具有相同型別的 bean 時,並且想要用乙個屬性只為它們其中的乙個進行裝配,在這種情況下,你可以使用@qualifier注釋和@autowired注釋通過指定哪乙個真正的 bean 將會被裝配來消除混亂
標名當前類是spring boot的配置類,同@configuration。
將所有符合條件的@configuration
配置都載入到當前springboot建立並使用的ioc容器。
spring boot 2.2.0版本定義了@configurationproperties可以不需要配合@configuration使用,但是後續版本又改回來了。為了相容加了@configurationpropertiesscan註解,用來主動掃瞄沒有定義 bean 的@configurationproperties。
標註為spring boot的啟動類,是複核註解,裡面包含有@springbootconfiguration,@enableautoconfiguration,@componentscan,@configurationpropertiesscan。
用來掃瞄和發現指定包及其子包中的entity
定義
用來掃瞄和發現指定包及其子包中的repository
定義。
用來進行單元測試,屬性classes指定啟動類,屬性webenvironment指定執行埠號。
主要用於controller層測試。只覆蓋應用程式的controller層,http請求和響應是mock出來的,因此不會建立真正的連線。因此需要建立 mockmvc bean進行模擬介面呼叫。
用於資料repository層測試。僅載入與jpa相關的配置
。預設情況下,帶有@datajpatest
註解的測試使用嵌入式記憶體資料庫。
定義個mock屬性。
使用該註解可以將mock bean注入到spring的上下文中。mock將替換spring上下文中任何相同型別的現有bean,如果沒有定義相同型別的bean,將新增乙個新的bean。
與@mockbean類似,它不會生成乙個 bean 的替代品裝配到類中,而是會監聽乙個真正的 bean 中某些特定的方法,並在呼叫這些方法時給出指定的反饋。卻不會影響這個 bean 其它的功能。
指定junit單元測試中的配置檔案
Spring Boot中常用的模組
spring boot中提供了很多 開箱即用 的模組,都是以spring boot starter xx作為命名的。下面列舉一些常用的模組。spring boot starter logging 使用spring boot預設的日誌框架logback spring boot starter log4...
SpringBoot 中常用到的幾個屬性
在spring4之後,增加了 restcontroller 這個屬性,用來返回json型別的資料,這個註解就相當於是 controller 和 responsebody 這個註解的結合。1 註解 pathvariable 在路徑中獲取值 controller 中編碼 package com dist...
Spring Boot中常用的三個註解
這個註解就是根據 configuration 註解演化而來的,二者功能也一致,標註當前類是配置類。備註 以上兩個註解會將當前類內宣告的乙個或多個以 bean 註解標記的方法的例項納入到spring容器中,並且例項名就是方法名,見下圖。這是 spring 3.1 新增的乙個註解,用來代替配置檔案中的 ...