6.dubbo常用的xml配置有哪些_【面試篇】必須掌握的Spring 常用注解

閱讀文本大概需要5分鐘。

注解本身沒有功能的,就和 xml 一樣。注解和 xml 都是一種元數據,元數據即解釋數據的數據,這就是所謂配置。

本文主要羅列 Spring|Spring MVC相關注解的簡介。

Spring部分

1、聲明bean的注解

@Component 組件,沒有明確的角色

@Service 在業務邏輯層使用(service層)

@Repository 在數據訪問層使用(dao層)

@Controller 在展現層使用,控制器的聲明(C)

2、注入bean的注解

@Autowired:由Spring提供

@Inject:由JSR-330提供

@Resource:由JSR-250提供

都可以注解在set方法和屬性上,推薦注解在屬性上(一目了然,少寫代碼)。

3、java配置類相關注解

@Configuration 聲明當前類為配置類,相當于xml形式的Spring配置(類上)

@Bean 注解在方法上,聲明當前方法的返回值為一個bean,替代xml中的方式(方法上)

@Configuration 聲明當前類為配置類,其中內部組合了@Component注解,表明這個類是一個bean(類上)

@ComponentScan 用于對Component進行掃描,相當于xml中的(類上)

@WishlyConfiguration 為@Configuration與@ComponentScan的組合注解,可以替代這兩個注解

4、切面(AOP)相關注解

Spring支持AspectJ的注解式切面編程。

@Aspect 聲明一個切面(類上)
使用@After、@Before、@Around定義建言(advice),可直接將攔截規則(切點)作為參數。

@After 在方法執行之后執行(方法上)
@Before 在方法執行之前執行(方法上)
@Around 在方法執行之前與之后執行(方法上)

@PointCut 聲明切點
在java配置類中使用@EnableAspectJAutoProxy注解開啟Spring對AspectJ代理的支持(類上)

5、@Bean的屬性支持

@Scope 設置Spring容器如何新建Bean實例(方法上,得有@Bean)
其設置類型包括:

Singleton (單例,一個Spring容器中只有一個bean實例,默認模式),
Protetype (每次調用新建一個bean),
Request (web項目中,給每個http request新建一個bean),
Session (web項目中,給每個http session新建一個bean),
GlobalSession(給每一個 global http session新建一個Bean實例)

@StepScope 在Spring Batch中還有涉及

@PostConstruct 由JSR-250提供,在構造函數執行完之后執行,等價于xml配置文件中bean的initMethod

@PreDestory 由JSR-250提供,在Bean銷毀之前執行,等價于xml配置文件中bean的destroyMethod

6、@Value注解

@Value 為屬性注入值(屬性上)
支持如下方式的注入:
》注入普通字符

962a0303861c9ace39432d939093ae20.png

》注入操作系統屬性

7698892ccca56b7bac4a5e6b5d357f1e.png

》注入表達式結果

febf0a94394fb804afff07da42cbe6ae.png

》注入其它bean屬性

50e8bf8915949089eb95b5c85dc4b6dd.png

》注入文件資源

f1db82d37e640be7cb66eed637a514bb.png

》注入網站資源

c2c5b261c548b70d2590fa08888668ab.png

》注入配置文件

9960cb5052c23839c9dac9861a00d10a.png

注入配置使用方法:
① 編寫配置文件(test.properties)

book.name=《三體》

② @PropertySource 加載配置文件(類上)

5064efacf7cd092e2eec7358b697b1d7.png

③ 還需配置一個PropertySourcesPlaceholderConfigurer的bean。

7、環境切換

@Profile 通過設定Environment的ActiveProfiles來設定當前context需要使用的配置環境。(類或方法上)

@Conditional Spring4中可以使用此注解定義條件話的bean,通過實現Condition接口,并重寫matches方法,從而決定該bean是否被實例化。(方法上)

8、異步相關

@EnableAsync 配置類中,通過此注解開啟對異步任務的支持,敘事性AsyncConfigurer接口(類上)

@Async 在實際執行的bean方法使用該注解來申明其是一個異步任務(方法上或類上所有的方法都將異步,需要@EnableAsync開啟異步任務)

9、定時任務相關

@EnableScheduling 在配置類上使用,開啟計劃任務的支持(類上)

@Scheduled 來申明這是一個任務,包括cron,fixDelay,fixRate等類型(方法上,需先開啟計劃任務的支持)

10、@Enable*注解說明

這些注解主要用來開啟對xxx的支持。
@EnableAspectJAutoProxy 開啟對AspectJ自動代理的支持

@EnableAsync 開啟異步方法的支持

@EnableScheduling 開啟計劃任務的支持

@EnableWebMvc 開啟Web MVC的配置支持

@EnableConfigurationProperties 開啟對@ConfigurationProperties注解配置Bean的支持

@EnableJpaRepositories 開啟對SpringData JPA Repository的支持

@EnableTransactionManagement 開啟注解式事務的支持

@EnableTransactionManagement 開啟注解式事務的支持

@EnableCaching 開啟注解式的緩存支持

11、測試相關注解

@RunWith 運行器,Spring中通常用于對JUnit的支持

db7a072463b02e8c719bc68b7e91bc4b.png

@ContextConfiguration 用來加載配置ApplicationContext,其中classes屬性用來加載配置類

6d2c33a83bf80fd6572335b7d15d3240.png

SpringMVC部分

@EnableWebMvc 在配置類中開啟Web MVC的配置支持,如一些ViewResolver或者MessageConverter等,若無此句,重寫WebMvcConfigurerAdapter方法(用于對SpringMVC的配置)。

@Controller 聲明該類為SpringMVC中的Controller

@RequestMapping 用于映射Web請求,包括訪問路徑和參數(類或方法上)

@ResponseBody 支持將返回值放在response內,而不是一個頁面,通常用戶返回json數據(返回值旁或方法上)

@RequestBody 允許request的參數在request體中,而不是在直接連接在地址后面。(放在參數前)

@PathVariable 用于接收路徑參數,比如@RequestMapping(“/hello/{name}”)申明的路徑,將注解放在參數中前,即可獲取該值,通常作為Restful的接口實現方法。

@RestController 該注解為一個組合注解,相當于@Controller和@ResponseBody的組合,注解在類上,意味著,該Controller的所有方法都默認加上了@ResponseBody。

@ControllerAdvice 通過該注解,我們可以將對于控制器的全局配置放置在同一個位置,注解了@Controller的類的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,
這對所有注解了 @RequestMapping的控制器內的方法有效。

@ExceptionHandler 用于全局處理控制器里的異常

@InitBinder 用來設置WebDataBinder,WebDataBinder用來自動綁定前臺請求參數到Model中。

@ModelAttribute 本來的作用是綁定鍵值對到Model里,在@ControllerAdvice中是讓全局的@RequestMapping都能獲得在此處設置的鍵值對。

原文鏈接:

https://blog.csdn.net/yelvgou9995/article/details/83345267

往期精彩

01?漫談發版哪些事,好課程推薦

02?Linux的常用最危險的命令

03?互聯網支付系統整體架構詳解

04?優秀的Java程序員必須了解的GC哪些

05?IT大企業有哪些病,別被這些病毀了自己?

關注我每天進步一點點

f9241ffb8d12fa139221d4b79e00976f.png

342c4389c7ebac0c1b4819774f5ef30b.png

你點的每個好看,我都認真當成了喜歡

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542620.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542620.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542620.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux的iptables常用配置范例(2)

iptables -F #清除所有規則 iptables -X #清除所有自定義規則 iptables -Z #各項計數歸零 iptables -P INPUT DROP #將input鏈默認規則設置為丟棄 iptables -P OUTPUT DROP #將output鏈默認規則設置為丟棄 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo …

aptitude 命令_C-命令行參數Aptitude問題與解答

aptitude 命令C programming Command Line Arguments Aptitude Questions and Answers: In this section you will find C Aptitude Questions and Answers on Command Line Arguments – Passing values with running programs, separate argument values, number of argument…

文件上傳java邏輯_Java?文件上傳?實例

import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class Upload {private String saveDir "."; // 要保存文件的路徑private String contentType ""; // 文檔類型private String charset "";…

matlab數值計算pdf_Gnuplot科學繪圖(九)——柵格以及方程數值解估算

Gnuplot科學繪圖系列內容Gnuplot科學繪圖(一)——從安裝到簡單函數繪圖(文末有彩蛋)Gnuplot科學繪圖(二)——坐標取值范圍及刻度(文末有彩蛋)Gnuplot科學繪圖(三)——點線風格Gnuplot科學繪圖(四)——多組數據繪圖Gnuplot科學繪圖(五)——輸出eps 圖片Gnuplot科學繪圖(六)——輸…

dda算法_計算機圖形學中的DDA(數字差分分析儀)算法

dda算法DDA(數字差分分析儀)算法 (DDA (Digital Differential Analyzer) Algorithm) In computer graphics, the DDA algorithm is the simplest algorithm among all other line generation algorithms. Here, the DDA is an abbreviation that stands for "Digital Diff…

購物商城框架java_基于jsp的購物商城-JavaEE實現購物商城 - java項目源碼

基于jspservletpojomysql實現一個javaee/javaweb的購物商城, 該項目可用各類java課程設計大作業中, 購物商城的系統架構分為前后臺兩部分, 最終實現在線上進行購物商城各項功能,實現了諸如用戶管理, 登錄注冊, 權限管理等功能, 并實現對各類購物商城相關的實體進行管理。該購物…

c語言++數組名【數字】_C ++程序在數組中打印所有非重復數字

c語言數組名【數字】Problem statement: Write a C program to print all the non-repeated numbers in an array in minimum time complexity. 問題陳述:編寫一個C 程序, 以最小的時間復雜度將所有未重復的數字打印在數組中 。 Input Example: 輸入示例…

java最接近對點及距離_最接近點對問題_分治法

一、問題描述給定平面上的n個點,找其中的一對點,使得在n個點組成的所有點對中該點對間的距離最小。二、解題思路及所選算法策略的可行性分析思路:利用分治法來解決問題。遞歸子結構求最接近點對總體可分為幾個步驟:1、當問題規模小…

python return用法_初學Python要了解什么 裝飾器知識匯總有哪些

初學Python要了解什么?裝飾器知識匯總有哪些?在Python學習過程中,有多種方法對函數和類進行加工,相對于其它方式,裝飾器語法簡單,代碼可讀性高。因此,裝飾器在Python項目中有廣泛的應用&#xf…

android emulator虛擬設備分析第三篇之pipe上的qemud service

一、概述 本篇和第二篇是強相關的&#xff0c;需要結合第二篇一起看。 以boot-properties為例&#xff0c;注意不需要看ANDROID-QEMUD.TXT&#xff0c;這個是和guest os中的qemud進行相關的&#xff0c;已廢棄。 啟動emulator時&#xff0c;有一個參數-prop <key><val…

c#異常處理_C#異常處理能力問題和解答 套裝4

c#異常處理1) Which is not a valid keyword used in the context of exception handling? trycatchfinalfinally Answer & Explanation Correct answer: 3final The final keyword is not used to handle exceptions in C#.NET. 1)在異常處理的上下文中使用哪個無效關鍵字…

Castor xsd生成java_java – Castor可以處理從基礎XSD導入的多個XSD生成類嗎?

注意&#xff1a;我是EclipseLink JAXB (MOXy)領導者,也是JAXB 2 (JSR-222)專家組的成員.Can Castor do this? If so, what would be the Ant task syntax for it.If not, would perhaps JAXB be a better alternative?下面是如何使用JAXB完成此操作的示例&#xff1a;產品xm…

串口通信 校驗碼_一文讀懂S7-200 SMART自由口通信!

學習S7-200 SMART時了解到&#xff0c;基于RS485接口可實現一下幾種通信&#xff1a;1&#xff09;modbus RTU通信2&#xff09;PPI協議通信3&#xff09;USS協議通信4&#xff09;自由口通信何為自由口通信呢&#xff1f;前三種通信必須要PLC和與其通信的設備支持相同的通信協…

hbase 學習(十三)集群間備份原理

集群建備份&#xff0c;它是master/slaves結構式的備份&#xff0c;由master推送&#xff0c;這樣更容易跟蹤現在備份到哪里了&#xff0c;況且region server是都有自己的WAL 和HLog日志&#xff0c;它就像mysql的主從備份結構一樣&#xff0c;只有一個日志來跟蹤。一個master集…

python expect模塊_Python基礎教程:用Python怎么telnet到網絡設備

Python基礎教程&#xff1a;用Python怎么telnet到網絡設備0.前言Telnet協議屬于TCP/IP協議族里的一種&#xff0c;對于我們這些網絡攻城獅來說&#xff0c;再熟悉不過了&#xff0c;常用于遠程登陸到網絡設備進行操作&#xff0c;但是&#xff0c;它的缺陷太明顯了&#xff0c;…

Java實現動態加載頁面_[Java教程]動態加載頁面數據的小工具 javascript + jQuery (持續更新)...

[Java教程]動態加載頁面數據的小工具 javascript jQuery (持續更新)0 2014-05-07 18:00:06使用該控件&#xff0c;可以根據url&#xff0c;參數&#xff0c;加載html記錄模板(包含json參數對應&#xff0c;以及具體記錄位置Index根據參數描述加載對應的屬性&#xff0c;并可以…

馬哥linux第六周作業

1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄&#xff0c;將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#&#xff1b;[rootmageedu tmp]# cp /etc/rc.d/rc.sysinit . [rootmageedu tmp]# vim rc.sysinit :% s/^[[:space:]]/#&/ #按Esc進入vi…

Java ObjectInputStream enableResolveObject()方法與示例

ObjectInputStream類enableResolveObject()方法 (ObjectInputStream Class enableResolveObject() method) enableResolveObject() method is available in java.io package. enableResolveObject()方法在java.io包中可用。 enableResolveObject() method is used to enable th…

pygame render怎么顯示中文_PyGame開發游戲(2D)02.基礎圖元

這節將介紹PyGame的基礎架構。并學習如何在PyGame里繪制各種幾何圖形和顯示加載圖片。01.應用框架上一節的示例程序里&#xff0c;我們用到一個PyGame的應用程序框架。這是一個基礎框架&#xff0c;利用它我們可以很輕松的添加各類圖型繪制&#xff0c;鍵盤鼠標輸入處理和各類邏…

word+增加水印+java_為Word2019文檔添加水印的兩種方法

水印的類型包括文字水印和圖片水印兩種。在Word文檔中添加文字水印時&#xff0c;可以使用程序中預設的水印效果&#xff0c;而圖片水印則需要自定義添加。一、使用程序預設的文字水印Word 2019中預設了機密、緊急、免責聲明三種類型的文字水印&#xff0c;用戶可根據文件的類型…