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
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...