16個Spring註解,你知道的有幾個?

2021-09-26 07:01:53 字數 3756 閱讀 3200

@controller

標識乙個該類是spring mvc controller處理器,用來建立處理http請求的物件.

spring4之後加入的註解,原來在@controller中返回json需要@responsebody來配合,如果直接用@restcontroller替代@controller就不需要再配置@responsebody,預設返回json格式。

用於標註業務層元件,說白了就是加入你有乙個用註解的方式把這個類注入到spring配置中

@autowired

用來裝配bean,都可以寫在字段上,或者方法上。

預設情況下必須要求依賴物件必須存在,如果要允許null值,可以設定它的required屬性為false,例如:@autowired(required=false)

類定義處: 提供初步的請求對映資訊,相對於 web 應用的根目錄。

方法處: 提供進一步的細分對映資訊,相對於類定義處的 url。

@requestparam

用於將請求引數區資料對映到功能處理方法的引數上

例如

這個id就是要接收從介面傳遞過來的引數id的值的,如果介面傳遞過來的引數名和你接收的不一致,也可以如下

其中course_id就是介面傳遞的引數,id就是對映course_id的引數名

@modelattribute2、標記在方法的引數上。

標記在方法的引數上,會將客戶端傳遞過來的引數按名稱注入到指定物件中,並且會將這個物件自動加入modelmap中,便於view層使用.我們在上面的類中加入乙個方法如下

在瀏覽器中輸入訪問位址並且加上引數:

http://localhost:8081/api/test/mod2?name=我是小菜&age=12

最終輸出:

從結果就能看出,用在方法引數中的@modelattribute註解,實際上是一種接受引數並且自動放入model物件中,便於使用。

@cacheable

用來標記快取查詢。可用用於方法或者類中,當標記在乙個方法上時表示該方法是支援快取的,當標記在乙個類上時則表示該類所有的方法都是支援快取的。

引數列表

比如@cacheable(value=「usercache」) 標識的是當呼叫了標記了這個註解的方法時,邏輯預設加上從快取中獲取結果的邏輯,如果快取中沒有資料,則執行使用者編寫查詢邏輯,查詢成功之後,同時將結果放入快取中。

但凡說到快取,都是key-value的形式的,因此key就是方法中的引數(id),value就是查詢的結果,而命名空間usercache是在spring*.xml中定義.

用來標記要清空快取的方法,當這個方法被呼叫後,即會清空快取。@cacheevict(value=」usercache」)

引數列表

@resource裝配順序:

1、如果同時指定了name和type,則從spring上下文中找到唯一匹配的bean進行裝配,找不到則丟擲異常

2、如果指定了name,則從上下文中查詢名稱(id)匹配的bean進行裝配,找不到則丟擲異常

3、如果指定了type,則從上下文中找到型別匹配的唯一bean進行裝配,找不到或者找到多個,都會丟擲異常

4、如果既沒有指定name,又沒有指定type,則自動按照byname方式進行裝配;如果沒有匹配,則回退為乙個原始型別進行匹配,如果匹配則自動裝配;

@predestroy

被@predestroy修飾的方法會在伺服器解除安裝servlet的時候執行,並且只會被伺服器呼叫一次,類似於servlet的destroy()方法。被@predestroy修飾的方法會在destroy()方法之後執行,在servlet被徹底解除安裝之前

@repository

用於標註資料訪問元件,即dao元件

@component

泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註

@scope

用來配置 spring bean 的作用域,它標識 bean 的作用域。

預設值是單例

1、singleton:單例模式,全域性有且僅有乙個例項

2、prototype:原型模式,每次獲取bean的時候會有乙個新的例項

3、request:request表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http request內有效

4、session:session作用域表示該針對每一次http請求都會產生乙個新的bean,同時該bean僅在當前http session內有效

5、global session:只在portal應用中有用,給每乙個 global http session 新建乙個bean例項。

@sessionattributes

預設情況下spring mvc將模型中的資料儲存到request域中。當乙個請求結束後,資料就失效了。如果要跨頁面使用。那麼需要使用到session。而@sessionattributes註解就可以使得模型中的資料儲存乙份到session域中

引數:1、names:這是乙個字串陣列。裡面應寫需要儲存到session中資料的名稱。

2、types:根據指定引數的型別,將模型中對應型別的引數儲存到session中

3、value:和names是一樣的。

適用於bean屬性setter方法,並表示受影響的bean屬性必須在xml配置檔案在配置時進行填充。否則,容器會丟擲乙個beaninitializationexception異常。

@qualifier

當你建立多個具有相同型別的 bean 時,並且想要用乙個屬性只為它們其中的乙個進行裝配,在這種情況下,你可以使用 @qualifier 注釋和 @autowired 注釋通過指定哪乙個真正的 bean 將會被裝配來消除混亂。

你需要知道的Spring註解

pathvariable requestparam和 requestbody responsebody 以上註解用於簡化http請求,用於controller層 ge tmap ping getma ppin g empl list public resp selectpage pagedto pa...

3個Spring Boot核心註解,你知道幾個?

spring boot 核心註解講解 spring boot 最大的特點是無需 xml 配置檔案,能自動掃瞄包路徑裝載並注入物件,並能做到根據 classpath 下的 jar 包自動配置。所以 spring boot 最核心的 3 個註解就是 1 configuration org.springf...

關於spring框架你應該知道的

4,配置不同型別的通知 1 在增強類的裡面,在作為通知方法上面新增通知型別註解,使用切入點表示式配置 例如新增前置通知 before value excution com.atguigu.user.add 5,相同切入點的抽取 當好幾個增強都是對乙個公共切入點時,可以在乙個空方法上面加乙個 poni...