最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot詳細列舉常用注解的說明

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

1 概述

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

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

2 常用注解

@Component

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

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

@Service

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

@Repository

組合注解(組合了@Component注解),應用在dao層(數(shù)據(jù)訪問層)。

@Controller

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

@RequestMapping

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

@ResponseBody

注解的作用是將controller的方法返回的對象通過適當?shù)霓D換器轉換為指定的格式之后,寫入到response對象的body區(qū),通常用來返回JSON數(shù)據(jù)或者是XML數(shù)據(jù)。

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

@RequestBody

將 HTTP 請求正文插入方法中,使用適合的 HttpMessageConverter 將請求體寫入某個對象。

作用:

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

使用時機

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

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

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

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

舉個例子:

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

@PathVariable

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

@RestController

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

@ExceptionHandler

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

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

@ModelAttribute

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

@Autowired

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

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

@Configuration

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

@Bean

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

@ComponentScan

自動掃描指定包下所有使用@Service、@Component、@Controller、@Repository的類并注冊。

@Aspect

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

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

@Scope

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

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

@PostConstruct

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

@PreDestory

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

@Value

經常與Sping EL表達式語言一起使用,注入普通字符,系統(tǒng)屬性,表達式運算結果,其他Bean的屬性,文件內容,網址請求內容,配置文件屬性值等。

@EnableAsync

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

@Async

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

@EnableScheduling

在配置類上使用,開啟計劃任務的支持。

@Scheduled

來申明這是一個任務,包括cron,fixDelay,fixRate等類型。

@Enable*注解說明

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

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

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

相關文章

  • Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件

    Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件

    這篇文章主要介紹了Java程序中使用JavaMail發(fā)送帶圖片和附件的郵件,JavaMail是專門用來處理郵件的Java API,需要的朋友可以參考下
    2015-11-11
  • java秒殺之redis限流操作詳解

    java秒殺之redis限流操作詳解

    這篇文章主要為大家詳細介紹了java秒殺之redis限流操作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • JavaSE實戰(zhàn)之酒店訂房系統(tǒng)的實現(xiàn)

    JavaSE實戰(zhàn)之酒店訂房系統(tǒng)的實現(xiàn)

    這篇文章主要為大家詳細介紹了如何利用JavaSE實現(xiàn)酒店訂房系統(tǒng),文中的示例代碼講解詳細,對我們學習JavaSE開發(fā)有一定的幫助,需要的可以參考一下
    2022-07-07
  • Spring Boot不同版本Redis設置JedisConnectionFactory詳解

    Spring Boot不同版本Redis設置JedisConnectionFactory詳解

    本文章向大家介紹Spring Boot不同版本Redis設置JedisConnectionFactory,主要內容包括1.X 版本、2.X 版本、2.、基本概念、基礎應用、原理機制和需要注意的事項等,并結合實例形式分析了其使用技巧,希望通過本文能幫助到大家理解應用這部分內容
    2023-09-09
  • 最新Spring Security實戰(zhàn)教程之Spring Security安全框架指南

    最新Spring Security實戰(zhàn)教程之Spring Security安全框架指南

    SpringSecurity是Spring生態(tài)系統(tǒng)中的核心組件,提供認證、授權和防護機制,以保護應用免受各種安全威脅,它支持多種認證方式,并通過攔截器和過濾器鏈進行安全檢查,本文通過搭建SpringBoot+SpringSecurity項目,幫助如何快速上手并應用SpringSecurity,感興趣的朋友一起看看吧
    2025-03-03
  • IDEA中編寫并運行shell腳本的實現(xiàn)

    IDEA中編寫并運行shell腳本的實現(xiàn)

    這篇文章主要介紹了IDEA中編寫并運行shell腳本的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • SpringMVC中Json數(shù)據(jù)交互處理示例詳解

    SpringMVC中Json數(shù)據(jù)交互處理示例詳解

    這篇文章主要介紹了SpringMVC中Json數(shù)據(jù)交互處理的相關資料,分別講解了JSON的基本概念、構成要素、數(shù)據(jù)類型、對象和數(shù)組的表示方法、字符串的轉義規(guī)則以及JSON與JavaScript的關系,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • Java8 日期、時間操作代碼

    Java8 日期、時間操作代碼

    在Java8之前,日期時間API一直被開發(fā)者詬病,包括:java.util.Date是可變類型,SimpleDateFormat非線程安全等問題。故此,Java8引入了一套全新的日期時間處理API,新的API基于ISO標準日歷系統(tǒng)
    2021-09-09
  • java中hibernate二級緩存詳解

    java中hibernate二級緩存詳解

    本篇文章中主要介紹了java中hibernate二級緩存詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringBoot項目多數(shù)據(jù)源及mybatis 駝峰失效的問題解決方法

    SpringBoot項目多數(shù)據(jù)源及mybatis 駝峰失效的問題解決方法

    這篇文章主要介紹了SpringBoot項目多數(shù)據(jù)源及mybatis 駝峰失效的問題解決方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論

大田县| 拉萨市| 衡山县| 庄河市| 霍林郭勒市| 英超| 察雅县| 吉林市| 神农架林区| 漾濞| 苏州市| 通城县| 巴彦县| 伊川县| 高邑县| 偃师市| 泸水县| 拜城县| 白银市| 永安市| 石狮市| 南召县| 贵定县| 拉孜县| 历史| 新竹市| 高青县| 乌兰察布市| 山东省| 湖口县| 津南区| 永善县| 金沙县| 福安市| 宁晋县| 金塔县| 敦煌市| 鄢陵县| 商河县| 吕梁市| 恩施市|