国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

java領(lǐng)軍框架Spring最常用的7大類(lèi)注解,史上最強整

發(fā)布時(shí)間:2022-05-26 12:47 來(lái)源:老劉博客 閱讀:77 作者:網(wǎng)絡(luò ) 欄目: 經(jīng)驗分享 歡迎投稿:712375056

本文目錄 顯示

隨著(zhù)技術(shù)的更新迭代,Java5.0開(kāi)始支持注解。而作為java中的領(lǐng)軍框架spring,自從更新了2.5版本之后也開(kāi)始慢慢舍棄xml配置,更多使用注解來(lái)控制spring框架。而spring的的注解那么多,可能做java很多年,都用不上。這里按照類(lèi)型總結了這7種最常用的注解。

一. 核心注解

@Required
此注解用于bean的setter方法上。表示此屬性是必須的,必須在配置階段注入,否則會(huì )拋出BeanInitializationExcepion。

@Autowired
此注解用于bean的field、setter方法以及構造方法上,顯式地聲明依賴(lài)。根據type來(lái)autowiring。

當在field上使用此注解,并且使用屬性來(lái)傳遞值時(shí),Spring會(huì )自動(dòng)把值賦給此field。也可以將此注解用于私有屬性(不推薦),如下。

最經(jīng)常的用法是將此注解用于settter上,這樣可以在setter方法中添加自定義代碼。如下:

當在構造方法上使用此注解的時(shí)候,需要注意的一點(diǎn)就是一個(gè)類(lèi)中只允許有一個(gè)構造方法使用此注解。此外,在Spring4.3后,如果一個(gè)類(lèi)僅僅只有一個(gè)構造方法,那么即使不使用此注解,那么Spring也會(huì )自動(dòng)注入相關(guān)的bean。如下:

@Qualifier
此注解是和@Autowired一起使用的。使用此注解可以讓你對注入的過(guò)程有更多的控制。

@Qualifier可以被用在單個(gè)構造器或者方法的參數上。當上下文有幾個(gè)相同類(lèi)型的bean, 使用@Autowired則無(wú)法區分要綁定的bean,此時(shí)可以使用@Qualifier來(lái)指定名稱(chēng)。

@Configuration
此注解用在class上來(lái)定義bean。其作用和xml配置文件相同,表示此bean是一個(gè)Spring配置。此外,此類(lèi)可以使用@Bean注解來(lái)初始化定義bean。

@ComponentScan
此注解一般和@Configuration注解一起使用,指定Spring掃描注解的package。如果沒(méi)有指定包,那么默認會(huì )掃描此配置類(lèi)所在的package。

@Lazy
此注解使用在Spring的組件類(lèi)上。默認的,Spring中Bean的依賴(lài)一開(kāi)始就被創(chuàng )建和配置。如果想要延遲初始化一個(gè)bean,那么可以在此類(lèi)上使用Lazy注解,表示此bean只有在第一次被使用的時(shí)候才會(huì )被創(chuàng )建和初始化。此注解也可以使用在被@Configuration注解的類(lèi)上,表示其中所有被@Bean注解的方法都會(huì )延遲初始化。

@Value
此注解使用在字段、構造器參數和方法參數上。@Value可以指定屬性取值的表達式,支持通過(guò)#{}使用SpringEL來(lái)取值,也支持使用${}來(lái)將屬性來(lái)源中(Properties文件、本地環(huán)境變量、系統屬性等)的值注入到bean的屬性中。此注解值的注入發(fā)生在A(yíng)utowiredAnnotationBeanPostProcessor類(lèi)中。

二. Spring MVC和REST注解

@Controller
此注解使用在class上聲明此類(lèi)是一個(gè)Spring controller,是@Component注解的一種具體形式。

@RequestMapping
此注解可以用在class和method上,用來(lái)映射web請求到某一個(gè)handler類(lèi)或者handler方法上。當此注解用在Class上時(shí),就創(chuàng )造了一個(gè)基礎url,其所有的方法上的@RequestMapping都是在此url之上的。

可以使用其method屬性來(lái)限制請求匹配的http method。

此外,Spring4.3之后引入了一系列@RequestMapping的變種。如下:

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @PatchMapping
  • @DeleteMapping

分別對應了相應method的RequestMapping配置。

@CookieValue
此注解用在@RequestMapping聲明的方法的參數上,可以把HTTP cookie中相應名稱(chēng)的cookie綁定上去。

cookie即http請求中name為JSESSIONID的cookie值。

@CrossOrigin
此注解用在class和method上用來(lái)支持跨域請求,是Spring 4.2后引入的。

@ExceptionHandler
此注解使用在方法級別,聲明對Exception的處理邏輯??梢灾付繕薊xception。

@InitBinder
此注解使用在方法上,聲明對WebDataBinder的初始化(綁定請求參數到JavaBean上的DataBinder)。在controller上使用此注解可以自定義請求參數的綁定。

@MatrixVariable
此注解使用在請求handler方法的參數上,Spring可以注入matrix url中相關(guān)的值。這里的矩陣變量可以出現在url中的任何地方,變量之間用;分隔。如下:

需要注意的是默認Spring mvc是不支持矩陣變量的,需要開(kāi)啟。

注解配置則需要如下開(kāi)啟:

@PathVariable
此注解使用在請求handler方法的參數上。@RequestMapping可以定義動(dòng)態(tài)路徑,如:

可以使用@PathVariable將路徑中的參數綁定到請求方法參數上。

此注解用在請求handler方法的參數上,用于將web請求中的屬性(request attributes,是服務(wù)器放入的屬性值)綁定到方法參數上。

@RequestBody
此注解用在請求handler方法的參數上,用于將http請求的Body映射綁定到此參數上。HttpMessageConverter負責將對象轉換為http請求。

@RequestHeader
此注解用在請求handler方法的參數上,用于將http請求頭部的值綁定到參數上。

@RequestParam
此注解用在請求handler方法的參數上,用于將http請求參數的值綁定到參數上。

@RequestPart
此注解用在請求handler方法的參數上,用于將文件之類(lèi)的multipart綁定到參數上。

@ResponseBody
此注解用在請求handler方法上。和@RequestBody作用類(lèi)似,用于將方法的返回對象直接輸出到http響應中。

@ResponseStatus
此注解用于方法和exception類(lèi)上,聲明此方法或者異常類(lèi)返回的http狀態(tài)碼??梢栽贑ontroller上使用此注解,這樣所有的@RequestMapping都會(huì )繼承。

@ControllerAdvice
此注解用于class上。前面說(shuō)過(guò)可以對每一個(gè)controller聲明一個(gè)ExceptionMethod。這里可以使用@ControllerAdvice來(lái)聲明一個(gè)類(lèi)來(lái)統一對所有@RequestMapping方法來(lái)做@ExceptionHandler、@InitBinder以及@ModelAttribute處理。

@RestController
此注解用于class上,聲明此controller返回的不是一個(gè)視圖而是一個(gè)領(lǐng)域對象。其同時(shí)引入了@Controller和@ResponseBody兩個(gè)注解。

@RestControllerAdvice
此注解用于class上,同時(shí)引入了@ControllerAdvice和@ResponseBody兩個(gè)注解。

@SessionAttribute
此注解用于方法的參數上,用于將session中的屬性綁定到參數。

@SessionAttributes
此注解用于type級別,用于將JavaBean對象存儲到session中。一般和@ModelAttribute注解一起使用。如下:

三. Spring Boot注解

@EnableAutoConfiguration
此注解通常被用在主應用class上,告訴Spring Boot自動(dòng)基于當前包添加Bean、對bean的屬性進(jìn)行設置等。

@SpringBootApplication
此注解用在Spring Boot項目的應用主類(lèi)上(此類(lèi)需要在base package中)。使用了此注解的類(lèi)首先會(huì )讓Spring Boot啟動(dòng)對base package以及其sub-pacakage下的類(lèi)進(jìn)行component scan。

此注解同時(shí)添加了以下幾個(gè)注解:

  • @Configuration
  • @EnableAutoConfiguration
  • @ComponentScan

四. Stereotype注解

@Component
此注解使用在class上來(lái)聲明一個(gè)Spring組件(Bean), 將其加入到應用上下文中。

@Controller
前文已經(jīng)提到過(guò)

@Service
此注解使用在class上,聲明此類(lèi)是一個(gè)服務(wù)類(lèi),執行業(yè)務(wù)邏輯、計算、調用內部api等。是@Component注解的一種具體形式。

@Repository
此類(lèi)使用在class上聲明此類(lèi)用于訪(fǎng)問(wèn)數據庫,一般作為DAO的角色。

此注解有自動(dòng)翻譯的特性,例如:當此種component拋出了一個(gè)異常,那么會(huì )有一個(gè)handler來(lái)處理此異常,無(wú)需使用try-catch塊。

五. 數據訪(fǎng)問(wèn)注解

@Transactional
此注解使用在接口定義、接口中的方法、類(lèi)定義或者類(lèi)中的public方法上。需要注意的是此注解并不激活事務(wù)行為,它僅僅是一個(gè)元數據,會(huì )被一些運行時(shí)基礎設施來(lái)消費。

六. 任務(wù)執行、調度注解

@Scheduled
此注解使用在方法上,聲明此方法被定時(shí)調度。使用了此注解的方法返回類(lèi)型需要是Void,并且不能接受任何參數。

第二個(gè)與第一個(gè)不同之處在于其不會(huì )等待上一次的任務(wù)執行結束。

@Async
此注解使用在方法上,聲明此方法會(huì )在一個(gè)單獨的線(xiàn)程中執行。不同于Scheduled注解,此注解可以接受參數。

使用此注解的方法的返回類(lèi)型可以是Void也可是返回值。但是返回值的類(lèi)型必須是一個(gè)Future。

七. 測試注解

@ContextConfiguration
此注解使用在Class上,聲明測試使用的配置文件,此外,也可以指定加載上下文的類(lèi)。

此注解一般需要搭配SpringJUnit4ClassRunner使用。

作者:Java程序媛環(huán)環(huán) blog.csdn.net/Lubanjava/article/details/100579554

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

免费观看又污又黄的网站| 无码免费一区二区三区免费播放| 精品无码久久久久久久久水蜜桃| 精品国产一区二区三区2021| 成人国内精品久久久久影院| 99久久久无码国产精品古装|