Spring Boot 二十個註解

来源:https://www.cnblogs.com/taojietaoge/archive/2019/10/14/11656409.html
-Advertisement-
Play Games

Spring Boot 二十個註解 占據無力擁有的東西是一種悲哀。 Cold on the outside passionate on the insede. 背景:Spring Boot 註解的強大毋庸置疑,使用其註解可以大量減少XML 等複雜的配置文件,令Java 代碼更純,開發更簡單高效,記下 ...


Spring Boot 二十個註解

 

占據無力擁有的東西是一種悲哀。

  Cold on the outside passionate on the insede.

 

背景:Spring Boot 註解的強大毋庸置疑,使用其註解可以大量減少XML 等複雜的配置文件,令Java 代碼更純,開發更簡單高效,記下一些常用的Spring Boot Annotations,不包括那些在Spring Boot 使用的JPA 和MyBatis 註解。

一、@SpringBootApplication

      @SpringBootApplication 註解用於聲明自動配置,即讓Spring Boot 自動為程式進行必要的配置;@SpringBootApplication 註解配置等同於@Configuration、@EnableAutoConfiguration 和@ComponentScan 三個註解的配置。

 1 import org.springframework.boot.SpringApplication;
 2 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 3 import org.springframework.boot.autoconfigure.SpringBootApplication;
 4 import org.springframework.context.annotation.ComponentScan;
 5 import org.springframework.context.annotation.Configuration;
 6 
 7 @SpringBootApplication
 8 /*@Configuration  三者只和等同於 @SpringBootApplication 註解進行自動配置
 9 @EnableAutoConfiguration
10 @ComponentScan*/
11 public class JzxyApplication {
12 
13     public static void main(String[] args) {
14         SpringApplication.run(JzxyApplication.class, args);
15         
16     }
17 
18 }

二、@Contronller

      @Contronller 註解用於定義該類屬於控制器類,因為在Sping Boot 項目中是由控制器負責將用戶請求的URL 轉發到對應的服務介面(Service 服務層),So使用其是必不可少。

 1 /**
 2  * 定義控制器類 @Controller 
 3  */
 4 @Controller
 5 @RequestMapping("/demon/linux")
 6 public class LinuxUsersController {
 7 
 8     @RequestMapping("/add/host")
 9     public Map getLinuxConn(@RequestBody List<LinuxConnEntity> list) {
10         Map resultMap = null;
11         return list == null
12                 ? setResult(resultMap, Constant.ZERO, Constant.REQUEST_NULL_MSG)
13                 : linuxUsersServiceImpl.createLinuxConn(list);
14 
15     }

三、@ResponseBody

      @ResponseBody 註解表示該方法的返回結果直接寫入HTTP 的Response Body 中,該註解一般在非同步獲取數據時使用,用於構建RESTful 的API;另外,在使用@RequestMapping 註解後返回值通常會解析為路徑跳轉,而在加上了@ResponseBody 註解後,返回結果則不會被解析為路徑而是直接寫入HTTP Response Body 中。

1 /**
2      * 非同步獲取json 數據,加上@responsebody 註解後,會直接返回json 數據
3      */
4     @ResponseBody
5     @RequestMapping("/responsebody")
6     public LinuxUserEntity testOne(LinuxUserEntity linuxUserEntity) {
7         return linuxUsersServiceImpl.test();
8         9     }

四、@RestController

@RestController 註解用於標註控制層組件,其是@ResponseBody 和@Contronller 兩個註解的集合。

 1 /**
 2  * @RestController 等價於@Controller 和 @ResponseBody 兩個註解的集合
 3  */
 4 @RestController
 5 @RequestMapping("/responsebody/linux")
 6 public class LinuxUsersController {
 7 
 8     @RequestMapping("/responsebody")
 9     public LinuxUserEntity testOne(LinuxUserEntity linuxUserEntity) {
10         return linuxUsersServiceImpl.test();
11         12     }

五、@RequestMapping

@RequestMapping 是提供路由信息的註解,其是負責URL 到Controller 中的具體函數的映射;此外,該註解後的括弧內經常會使用如下六個屬性:

1. param:指定請求request 中必須包含某些參數,否則不處理該方法;

2. header:指定請求request 中必須包含某些指定的header 值,否則不處理該方法;

3. value:指定請求的實際地址;

4. method:指定請求的方法method 類型,通常設計為RESTful 風格的GET、POST、PUT 和DELETE;

5. consumes:指定處理請求提交內容的具體類型(即Content-Type),如applicatin/json 和text/html 等類型格式;

6: produces:指定返回的內容類型,設置該屬性後僅當request 請求頭中的Accept 類型中包含該制定類型時才會返回,需謹慎。

1 /**
2      * @RequestMapping 提供路由信息的註解
3      */
4     @RequestMapping("/responsebody")
5     public LinuxUserEntity testOne(LinuxUserEntity linuxUserEntity) {
6         return linuxUsersServiceImpl.test();
7     }

六、@EnableAutoConfiguration

      @EnableAutoConfiguration 是Spring Boot 自動配置註解,其會根據項目中添加的依賴自動配置Spring 應用;比如Spring Boot 自動配置內嵌tomcat 的埠為8080;還有自動載入應用程式所需的所有Bean,這依賴於Spring Boot 在類路徑中的查找結果,就比如你在classpath 下存在HSQLDB,並且沒有手動配置任何資料庫連接Bean,那麼@EnableAutoConfiguration 註解就會自動配置一個記憶體模型(in-memory)資料庫。

七、@ComponentScan

      @ComponentScan 註解表示該類會自動發現掃描組件,若掃描到包含@Component、@Controller 和@Service 等註解的類,則會將其註冊為Bean,並且可以自動收集所有的Spring 組件,包括有@Configuration 註解標註的類;開發中經常使用@ComponentScan 註解搜索Beans,並結合@Autowired 註解將Beans 註入,若沒有進行配置,則Spring Boot 只會掃描SpringBootApplication 啟動類所在包下及其子包下的使用了@Service、@Repository 等註解的類。

八、@Configuration

      @Configuration 註解作用類似於傳統的xml 配置文件;例如,有第三方庫需要用到xml 文件,則可以通過添加@Configuration 註解表示該類作為項目的配置主類,然後使用@ImportResource 註解載入xml 配置文件內容。

九、@Import

@Import 註解作用是導入其它配置類。

十、@ImportResource

@ImportResource 註解作用是載入xml 配置文件。

十一、@Autowired

      @Autowired 註解的作用是自動導入依賴的Bean;即把配置好的Bean 拿來用,完成屬性、方法的組裝,它可以對類成員變數、方法及構造函數進行標註,完成自動裝配的工作;並且當加上標簽(required=false)時,就算找不到bean 也不報錯,允許註入為空。

十二、@Service

@Service 註解的作用是標誌某類為Service 層,是Service 服務層組件註解。

十三、@Repository

      @Repository 註解作用是標誌某類為數據層,其可用於確保DAO 層或者Repositories 能正常轉譯;當@Repository 註解修飾DAO 或者repositories 類時會被ComponentScan 發現並配置。

十四、@Bean

      @Bean 註解相當於XML 配置文件中使用的<bean>標簽,初始化的時候創建對象,並交由IOC 容器管理;需要註意的是@Bean 註解是放在方法的上面,而不是類,意思是產生一個bean,並交給spring 管理。

十五、@Value

@Value 註解作用是註入Spring Boot 配置文件application.properties,即獲取application.properties 配置文件中屬性的值。

1 @Value(value = "#{VEHIVLE_TOPIC}")
2     private String VEHIVLE_TOPIC;

十六、@inject

@inject 註解作用與@Autowired 相同,不同的是其沒有require 屬性,強制要求註入不能為空。

十七、@Component

@Component 註解泛指組件,即當組件不方便歸類時,可以使用該註解進行標註歸類。

十八、@Qualifier

      @Qualifier 註解用於當有多個同一類型的Bean 時,通過@Qualifier(“name”) 根據名字來指定註入的Bean;其需要配合@Autowired 使用,根據名字進行註入,進行更細粒度的控制如何選擇要註入的Bean。

十九、@Resouce

      @Resouce 註解的作用與@Autowired 相似,都是自動註入依賴的Bean;不同的是@Resource(name=”name”,type=”type”) 多了括弧內的屬性,當沒有括弧內內容的話,預設byName。

二十、@PathVariable

@PathVariable 註解的作用是獲取路徑變數。

 1 /**
 2      * @RequestMapping 獲取路徑變數
 3      */
 4     @RequestMapping("/ioc/get/{address}")
 5     public String testOne(@PathVariable String address ) {
 6         /**
 7          * 獲取得到路徑中address 的值
 8          */
 9         return address;
10     }

 

 

 

占據無力擁有的東西是一種悲哀。

  Cold on the outside passionate on the insede.

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Lambda 表達式已閱 君子之間淡如水,何謂淡如水?並不時常想起,但卻無處不在。 背景:This is f**king why we code? 可以讓Java 代碼異常簡潔的Lambda 表達式,瞭解一下。 一、Lambda 表達式簡介 Lambda 表達式類似一種匿名函數,簡單地說它就是沒有聲 ...
  • Python3入門機器學習經典演算法與應用學習 資源 datasets可以用來載入真實數據進行模型訓練的測試 model_selection模塊提供了模型選擇的相關操作 preprocessing模塊提供了數據預處理的相關操作 neighbors模塊提供了近鄰相關的演算法實現 metrics模塊提供了數 ...
  • [☞ 分享:最全最新的Python學習大禮包 ☜ 點擊查看](https://mp.weixin.qq.com/s?__biz=MzU2MzgyODA4OA==&mid=100000592&idx=1&sn=6ee048d8420d213be8b10b87e58669ee&chksm=7c55074 ...
  • JqueryMobile提交表單到php時,會出現空白頁面,需要手動刷新才會顯示php頁面。 修正方法:form元素中添加data-ajax=“false”。 具體原理:https://blog.csdn.net/qw_xingzhe/article/details/37342887 ...
  • 在模板文件中,可以使用“${{...}}”表達式進行數據轉換,Thymeleaf會使用配置好的數據轉換類,來實現轉換。 例如一個User對象,簡單起見假設有姓名和年齡兩個欄位,對象的toString()方法拼接所有欄位,使用“${user}”會調用對象的 toString()方法得到所有欄位,... ...
  • URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL與要為該URL調用的視圖函數之間的映射表;你就是以這種方式告訴Django,對於客戶端發來的某個URL調用哪一段邏輯代碼對應執行。 簡單的路由配置 註意: 1、使用URL,必須先將應用程式中的視圖函數導入到urls.py ...
  • Thymeleaf表達式語法之常量分為字元串常量、數字常量、布爾值常量、空值常量; 運算符分為算術運算符、關係運算符、條件運算符、無操作符。 ...
  • 只要你在 resources 目錄下放置名為 banner.txt、banner.gif 、banner.jpg 或 banner.png 的文件,Spring Boot 會自動載入,將其作為啟動時列印的 logo。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...