亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot詳細(xì)列舉常用注解的說(shuō)明

 更新時(shí)間:2022年06月06日 11:59:16   作者:孟華328  
在開(kāi)發(fā)SpringBoot程序的過(guò)程中,有可能與其他業(yè)務(wù)系統(tǒng)進(jìn)行對(duì)接開(kāi)發(fā),獲取封裝公共的API接口等等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot常見(jiàn)的注解的相關(guān)資料,需要的朋友可以參考下

1 概述

IOC 是Spring 最為重要的功能之一,就是將Bean初始化加載到容器中,Bean是如何加載到容器的,可以使用Spring注解方式或者Spring XML配置方式。

簡(jiǎn)言之,注解本身沒(méi)有什么業(yè)務(wù)功能的,和 xml 一樣,是一種元數(shù)據(jù),元數(shù)據(jù)即解釋數(shù)據(jù)的數(shù)據(jù),這就是所謂配置。

2 常用注解

@Component

表示一個(gè)帶注釋的類是一個(gè)“組件”,成為Spring管理的Bean。當(dāng)使用基于注解的配置和類路徑掃描時(shí),這些類被視為自動(dòng)檢測(cè)的候選對(duì)象。同時(shí)@Component還是一個(gè)元注解。

所謂元注解,其實(shí)就是可以注解到別的注解上的注解,被注解的注解稱之為組合注解,組合注解具備其上元注解的功能。

@Service

組合注解(組合了@Component注解),應(yīng)用在service層(業(yè)務(wù)邏輯層)。

@Repository

組合注解(組合了@Component注解),應(yīng)用在dao層(數(shù)據(jù)訪問(wèn)層)。

@Controller

組合注解(組合了@Component注解),應(yīng)用在MVC層(控制層),DispatcherServlet會(huì)自動(dòng)掃描注解了此注解的類,然后將web請(qǐng)求映射到注解了@RequestMapping的方法上。

@RequestMapping

用于映射Web請(qǐng)求,包括訪問(wèn)路徑和參數(shù)。(類或方法上)

@ResponseBody

注解的作用是將controller的方法返回的對(duì)象通過(guò)適當(dāng)?shù)霓D(zhuǎn)換器轉(zhuǎn)換為指定的格式之后,寫(xiě)入到response對(duì)象的body區(qū),通常用來(lái)返回JSON數(shù)據(jù)或者是XML數(shù)據(jù)。

注意:在使用此注解之后不會(huì)再走視圖處理器,而是直接將數(shù)據(jù)寫(xiě)入到輸入流中,他的效果等同于通過(guò)response對(duì)象輸出指定格式的數(shù)據(jù)。

@RequestBody

將 HTTP 請(qǐng)求正文插入方法中,使用適合的 HttpMessageConverter 將請(qǐng)求體寫(xiě)入某個(gè)對(duì)象。

作用:

  • 該注解用于讀取Request請(qǐng)求的body部分?jǐn)?shù)據(jù),使用系統(tǒng)默認(rèn)配置的HttpMessageConverter進(jìn)行解析,然后把相應(yīng)的數(shù)據(jù)綁定到要返回的對(duì)象上;
  • 再把HttpMessageConverter返回的對(duì)象數(shù)據(jù)綁定到 controller中方法的參數(shù)上。

使用時(shí)機(jī)

GET、POST方式提時(shí), 根據(jù)request header Content-Type的值來(lái)判斷:

  • application/x-www-form-urlencoded, 可選(即非必須,因?yàn)檫@種情況的數(shù)據(jù)@RequestParam, @ModelAttribute也可以處理,當(dāng)然@RequestBody也能處理)。
  • multipart/form-data, 不能處理(即使用@RequestBody不能處理這種格式的數(shù)據(jù))
  • 其他格式, 必須(其他格式包括application/json, application/xml等。這些格式的數(shù)據(jù),必須使用@RequestBody來(lái)處理)

PUT方式提交時(shí), 根據(jù)request header Content-Type的值來(lái)判斷

application/x-www-form-urlencoded, 必須;multipart/form-data, 不能處理;其他格式, 必須

舉個(gè)例子:

@RequestMapping(value = "user/login")
@ResponseBody
// 將ajax(datas)發(fā)出的請(qǐng)求寫(xiě)入 User 對(duì)象中
public User login(@RequestBody User user) {   
// 這樣就不會(huì)再被解析為跳轉(zhuǎn)路徑,而是直接將user對(duì)象寫(xiě)入 HTTP 響應(yīng)正文中
    return user;    

@PathVariable

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

@RestController

該注解為一個(gè)組合注解,相當(dāng)于@Controller和@ResponseBody的組合,注解在類上,意味著,該Controller的所有方法都默認(rèn)加上了@ResponseBody。

@ExceptionHandler

用于全局處理控制器里的異常。為什么會(huì)有這個(gè)注解,原因在于:

  • Exception什么的異常太過(guò)廣泛,我們直接拋出所有異常信息,對(duì)用戶而言是非常不友好的。
  • 在事務(wù)管理里,如果我們自定義的異常繼承的是Exception,則事務(wù)無(wú)效。如果我們是繼承RuntimeException,則不會(huì)出現(xiàn)這個(gè)問(wèn)題。

@ModelAttribute

本來(lái)的作用是綁定鍵值對(duì)到 Model 里,在 @ControllerAdvice 中是讓全局的@RequestMapping都能獲得在此處設(shè)置的鍵值對(duì)。

@Autowired

可以對(duì)成員變量、方法和構(gòu)造函數(shù)進(jìn)行標(biāo)注,來(lái)完成自動(dòng)裝配的工作,@Autowired標(biāo)注可以放在成員變量上,也可以放在成員變量的set方法上,也可以放在任意方法上表示,自動(dòng)執(zhí)行當(dāng)前方法,如果方法有參數(shù),會(huì)在IOC容器中自動(dòng)尋找同類型參數(shù)為其傳值。

注意:@Autowired是根據(jù)類型進(jìn)行自動(dòng)裝配的,如果需要按名稱進(jìn)行裝配,則需要配合@Qualifier使用;

@Configuration

聲明當(dāng)前類是一個(gè)配置類(相當(dāng)于一個(gè)Spring配置的xml文件)。

@Bean

注解在方法上,聲明當(dāng)前方法的返回值為一個(gè)Bean。返回的Bean對(duì)應(yīng)的類中可以定義init()方法和destroy()方法,然后在@Bean(initMethod=”init”,destroyMethod=”destroy”)定義,在構(gòu)造之后執(zhí)行init,在銷毀之前執(zhí)行destroy。

@ComponentScan

自動(dòng)掃描指定包下所有使用@Service、@Component、@Controller、@Repository的類并注冊(cè)。

@Aspect

聲明一個(gè)切面(類上) 使用@After、@Before、@Around定義建言(advice),可直接將攔截規(guī)則(切點(diǎn))作為參數(shù)。

  • @After :在方法執(zhí)行之后執(zhí)行(方法上)。
  • @Before: 在方法執(zhí)行之前執(zhí)行(方法上)。
  • @Around: 在方法執(zhí)行之前與之后執(zhí)行(方法上)。
  • @PointCut: 聲明切點(diǎn) 在java配置類中使用@EnableAspectJAutoProxy注解開(kāi)啟Spring對(duì)AspectJ代理的支持。AspectJ靜態(tài)編譯織入(Aspect for java),他其實(shí)是一套獨(dú)立的面向切面編程的解決方案。Spring中雖然使用了Aspect的Annotation,但是并沒(méi)有使用它的編譯器和織入器。

@Scope

定義我們采用什么模式去創(chuàng)建Bean(方法上,得有@Bean) 其設(shè)置類型包括:

  • Singleton (單例,一個(gè)Spring容器中只有一個(gè)bean實(shí)例,默認(rèn)模式)
  • Prototype(每次調(diào)用新建一個(gè)bean)
  • Request (web項(xiàng)目中,給每個(gè)http request新建一個(gè)bean)
  • Session(web項(xiàng)目中,給每個(gè)http session新建一個(gè)bean)
  • GlobalSession(給每一個(gè) global http session新建一個(gè)Bean實(shí)例)。
@Scope("prototype")//多實(shí)例,IOC容器啟動(dòng)創(chuàng)建的時(shí)候,并不會(huì)創(chuàng)建對(duì)象放在容器在容器當(dāng)中,當(dāng)你需要的時(shí)候,需要從容器當(dāng)中取該對(duì)象的時(shí)候,就會(huì)創(chuàng)建。
@Scope("singleton")//單實(shí)例 IOC容器啟動(dòng)的時(shí)候就會(huì)調(diào)用方法創(chuàng)建對(duì)象,以后每次獲取都是從容器當(dāng)中拿同一個(gè)對(duì)象(map當(dāng)中)。
@Scope("request")//同一個(gè)請(qǐng)求創(chuàng)建一個(gè)實(shí)例
@Scope("session")//同一個(gè)session創(chuàng)建一個(gè)實(shí)例

@PostConstruct

標(biāo)注在方法上,該方法在構(gòu)造函數(shù)執(zhí)行完成之后執(zhí)行。

@PreDestory

標(biāo)注在方法上,該方法在對(duì)象銷毀之前執(zhí)行。

@Value

經(jīng)常與Sping EL表達(dá)式語(yǔ)言一起使用,注入普通字符,系統(tǒng)屬性,表達(dá)式運(yùn)算結(jié)果,其他Bean的屬性,文件內(nèi)容,網(wǎng)址請(qǐng)求內(nèi)容,配置文件屬性值等。

@EnableAsync

配置類中,通過(guò)此注解開(kāi)啟對(duì)異步任務(wù)的支持,敘事性AsyncConfigurer接口。

@Async

在實(shí)際執(zhí)行的bean方法使用該注解來(lái)申明其是一個(gè)異步任務(wù)(方法上或類上所有的方法都將異步,需要@EnableAsync開(kāi)啟異步任務(wù))

@EnableScheduling

在配置類上使用,開(kāi)啟計(jì)劃任務(wù)的支持。

@Scheduled

來(lái)申明這是一個(gè)任務(wù),包括cron,fixDelay,fixRate等類型。

@Enable*注解說(shuō)明

這些注解主要用來(lái)開(kāi)啟對(duì)xxx的支持。 @EnableAspectJAutoProxy 開(kāi)啟對(duì)AspectJ自動(dòng)代理的支持。

  • @EnableAsync: 開(kāi)啟異步方法的支持。
  • @EnableScheduling: 開(kāi)啟計(jì)劃任務(wù)的支持。
  • @EnableWebMvc :開(kāi)啟Web MVC的配置支持。
  • @EnableConfigurationProperties :開(kāi)啟對(duì)@ConfigurationProperties注解配置Bean的支持。
  • @EnableJpaRepositories:開(kāi)啟對(duì)SpringData JPA Repository的支持。
  • @EnableTransactionManagement:開(kāi)啟注解式事務(wù)的支持。
  • @EnableTransactionManagement: 開(kāi)啟注解式事務(wù)的支持。
  • @EnableCaching: 開(kāi)啟注解式的緩存支持。

到此這篇關(guān)于SpringBoot詳細(xì)列舉常用注解的使用的文章就介紹到這了,更多相關(guān)SpringBoot注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Struts2的類型轉(zhuǎn)換詳解

    關(guān)于Struts2的類型轉(zhuǎn)換詳解

    本篇文章,小編將為大家介紹關(guān)于Struts2的類型轉(zhuǎn)換詳解,有需要的朋友可以參考一下
    2013-04-04
  • Java使用ArrayList實(shí)現(xiàn)撲克牌的示例代碼

    Java使用ArrayList實(shí)現(xiàn)撲克牌的示例代碼

    學(xué)習(xí)了關(guān)于集合類的知識(shí),我們可以做一個(gè)小項(xiàng)目來(lái)加深對(duì)集合類知識(shí)的學(xué)習(xí)!本文就來(lái)利用ArrayList實(shí)現(xiàn)撲克牌發(fā)牌洗牌效果,需要的可以參考一下
    2022-10-10
  • Maven發(fā)布項(xiàng)目 (jar包) 到Nexus私服中的操作

    Maven發(fā)布項(xiàng)目 (jar包) 到Nexus私服中的操作

    這篇文章主要介紹了Maven發(fā)布項(xiàng)目 (jar包) 到Nexus私服中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • 關(guān)于SpringBoot啟動(dòng)速度慢的原因總結(jié)

    關(guān)于SpringBoot啟動(dòng)速度慢的原因總結(jié)

    這篇文章主要介紹了關(guān)于SpringBoot啟動(dòng)速度慢的原因總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java 從服務(wù)器下載文件并保存到本地的示例

    java 從服務(wù)器下載文件并保存到本地的示例

    本篇文章主要介紹了java 從服務(wù)器下載文件并保存到本地的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • springboot多租戶設(shè)計(jì)過(guò)程圖解

    springboot多租戶設(shè)計(jì)過(guò)程圖解

    這篇文章主要介紹了springboot多租戶設(shè)計(jì)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 深入理解java內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)

    深入理解java內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)

    這篇文章主要介紹了Java多線程之內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)的深入理解新的和用法,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • java讀取csv文件和寫(xiě)csv示例分享

    java讀取csv文件和寫(xiě)csv示例分享

    這篇文章主要介紹了JAVA對(duì)CSV格式文本數(shù)據(jù)處理后再保存成新CSV格式文本的模板,可以學(xué)習(xí)到j(luò)ava讀取csv文件和寫(xiě)csv的方法,需要的朋友可以參考下
    2014-03-03
  • Java三目運(yùn)算符的實(shí)戰(zhàn)案例

    Java三目運(yùn)算符的實(shí)戰(zhàn)案例

    三目運(yùn)算符在java中運(yùn)用可以說(shuō)非常的廣泛,下面這篇文章主要給大家介紹了關(guān)于Java三目運(yùn)算符的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 詳解Java如何實(shí)現(xiàn)自定義注解

    詳解Java如何實(shí)現(xiàn)自定義注解

    注解(Annotation),也叫元數(shù)據(jù)。一種代碼級(jí)別的說(shuō)明。它是JDK1.5及以后版本引入的一個(gè)特性,與類、接口、枚舉是在同一個(gè)層次。本文將通過(guò)示例詳解Java如何實(shí)現(xiàn)自定義注解,需要的可以參考一下
    2022-06-06

最新評(píng)論