這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)spring boot的核心注解有哪些,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)公司制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計(jì),網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)站設(shè)計(jì),企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為成百上千服務(wù),創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務(wù)!在spring boot中,摒棄了spring以往項(xiàng)目中大量繁瑣的配置,遵循約定大于配置的原則,通過自身默認(rèn)配置,極大的降低了項(xiàng)目搭建的復(fù)雜度。同樣在spring boot中,大量注解的使用,使得代碼看起來更加簡潔,提高開發(fā)的效率。這些注解不光包括spring boot自有,也有一些是繼承自spring的。
下面將spring boot項(xiàng)目中常用的一些核心注解歸類總結(jié),并結(jié)合實(shí)際使用的角度來解釋其作用。
1、@SpringBootApplication 注解
查看源碼可發(fā)現(xiàn),@SpringBootApplication是一個(gè)復(fù)合注解,包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan這三個(gè)注解。
這三個(gè)注解的作用分別為:
@SpringBootConfiguration:標(biāo)注當(dāng)前類是配置類,這個(gè)注解繼承自@Configuration。并會將當(dāng)前類內(nèi)聲明的一個(gè)或多個(gè)以@Bean注解標(biāo)記的方法的實(shí)例納入到srping容器中,并且實(shí)例名就是方法名。
@EnableAutoConfiguration:是自動配置的注解,這個(gè)注解會根據(jù)我們添加的組件jar來完成一些默認(rèn)配置,我們做微服時(shí)會添加spring-boot-starter-web這個(gè)組件jar的pom依賴,這樣配置會默認(rèn)配置springmvc 和tomcat。
@ComponentScan:掃描當(dāng)前包及其子包下被@Component,@Controller,@Service,@Repository注解標(biāo)記的類并納入到spring容器中進(jìn)行管理。等價(jià)于
大多數(shù)情況下,這3個(gè)注解會被同時(shí)使用,基于最佳實(shí)踐,這三個(gè)注解就被做了包裝,成為了@SpringBootApplication注解。
2、@ServletComponentScan:Servlet、Filter、Listener 可以直接通過 @WebServlet、@WebFilter、@WebListener 注解自動注冊,這樣通過注解servlet ,攔截器,監(jiān)聽器的功能而無需其他配置,所以這次相中使用到了filter的實(shí)現(xiàn),用到了這個(gè)注解。
3、@MapperScan:spring-boot支持mybatis組件的一個(gè)注解,通過此注解指定mybatis接口類的路徑,即可完成對mybatis接口的掃描。
它和@mapper注解是一樣的作用,不同的地方是掃描入口不一樣。@mapper需要加在每一個(gè)mapper接口類上面。所以大多數(shù)情況下,都是在規(guī)劃好工程目錄之后,通過@MapperScan注解配置路徑完成mapper接口的注入。
添加mybatis相應(yīng)組建依賴之后。就可以使用該注解。
進(jìn)一步查看mybatis-spring-boot-starter包,可以找到這里已經(jīng)將mybatis做了包裝。
這也是spring的一個(gè)理念,不重復(fù)造輪子,整合優(yōu)秀的資源進(jìn)入spring的體系中。
4、資源導(dǎo)入注解:@ImportResource @Import @PropertySource 這三個(gè)注解都是用來導(dǎo)入自定義的一些配置文件。
@ImportResource(locations={}) 導(dǎo)入其他xml配置文件,需要標(biāo)準(zhǔn)在主配置類上。
導(dǎo)入property的配置文件 @PropertySource指定文件路徑,這個(gè)相當(dāng)于使用spring的
@import注解是一個(gè)可以將普通類導(dǎo)入到spring容器中做管理
1、@Controller 表明這個(gè)類是一個(gè)控制器類,和@RequestMapping來配合使用攔截請求,如果不在method中注明請求的方式,默認(rèn)是攔截get和post請求。這樣請求會完成后轉(zhuǎn)向一個(gè)視圖解析器。但是在大多微服務(wù)搭建的時(shí)候,前后端會做分離。所以請求后端只關(guān)注數(shù)據(jù)處理,后端返回json數(shù)據(jù)的話,需要配合@ResponseBody注解來完成。
這樣一個(gè)只需要返回?cái)?shù)據(jù)的接口就需要3個(gè)注解來完成,大多情況我們都是需要返回?cái)?shù)據(jù)。也是基于最佳實(shí)踐,所以將這三個(gè)注解進(jìn)一步整合。
@RestController 是@Controller 和@ResponseBody的結(jié)合,一個(gè)類被加上@RestController 注解,數(shù)據(jù)接口中就不再需要添加@ResponseBody。更加簡潔。
同樣的情況,@RequestMapping(value="",method= RequestMethod.GET ),我們都需要明確請求方式。這樣的寫法又會顯得比較繁瑣,于是乎就有了如下的幾個(gè)注解。
普通風(fēng)格 | Rest風(fēng)格 |
---|---|
@RequestMapping(value=“”,method = RequestMethod.GET) | @GetMapping(value =“”) |
@RequestMapping(value=“”,method = RequestMethod.POST) | @PostMapping(value =“”) |
@RequestMapping(value=“”,method = RequestMethod.PUT) | @PutMapping(value =“”) |
@RequestMapping(value=“”,method = RequestMethod.DELETE) | @DeleteMapping(value =“”) |
這幾個(gè)注解是 @RequestMapping(value="",method= RequestMethod.xxx )的最佳實(shí)踐。為了代碼的更加簡潔。
2、@CrossOrigin:@CrossOrigin(origins = "", maxAge = 1000) 這個(gè)注解主要是為了解決跨域訪問的問題。這個(gè)注解可以為整個(gè)controller配置啟用跨域,也可以在方法級別啟用。
我們在項(xiàng)目中使用這個(gè)注解是為了解決微服在做定時(shí)任務(wù)調(diào)度編排的時(shí)候,會訪問不同的spider節(jié)點(diǎn)而出現(xiàn)跨域問題。
3、@Autowired:這是個(gè)最熟悉的注解,是spring的自動裝配,這個(gè)個(gè)注解可以用到構(gòu)造器,變量域,方法,注解類型上。當(dāng)我們需要從bean 工廠中獲取一個(gè)bean時(shí),Spring會自動為我們裝配該bean中標(biāo)記為@Autowired的元素。
4、@EnablCaching@EnableCaching: 這個(gè)注解是spring framework中的注解驅(qū)動的緩存管理功能。自spring版本3.1起加入了該注解。其作用相當(dāng)于spring配置文件中的cache manager標(biāo)簽。
5、@PathVariable:路徑變量注解,@RequestMapping中用{}來定義url部分的變量名,如:
同樣可以支持變量名加正則表達(dá)式的方式,變量名:[正則表達(dá)式]。
1、@Service:這個(gè)注解用來標(biāo)記業(yè)務(wù)層的組件,我們會將業(yè)務(wù)邏輯處理的類都會加上這個(gè)注解交給spring容器。事務(wù)的切面也會配置在這一層。當(dāng)讓 這個(gè)注解不是一定要用。有個(gè)泛指組件的注解,當(dāng)我們不能確定具體作用的時(shí)候 可以用泛指組件的注解托付給spring容器。
2、@Resource:@Resource和@Autowired一樣都可以用來裝配bean,都可以標(biāo)注字段上,或者方法上。 @resource注解不是spring提供的,是屬于J2EE規(guī)范的注解。
兩個(gè)之前的區(qū)別就是匹配 方式上有點(diǎn)不同,@Resource默認(rèn)按照名稱方式進(jìn)行bean匹配,@Autowired默認(rèn)按照類型方式進(jìn)行bean匹配。
1、@Repository:@Repository注解類作為DAO對象,管理操作數(shù)據(jù)庫的對象。
總得來看,@Component, @Service, @Controller, @Repository是spring注解,注解后可以被spring框架所掃描并注入到spring容器來進(jìn)行管理
@Component是通用注解,其他三個(gè)注解是這個(gè)注解的拓展,并且具有了特定的功能。
通過這些注解的分層管理,就能將請求處理,義務(wù)邏輯處理,數(shù)據(jù)庫操作處理分離出來,為代碼解耦,也方便了以后項(xiàng)目的維護(hù)和開發(fā)。
所以我們在正常開發(fā)中,如果能用@Service, @Controller, @Repository其中一個(gè)標(biāo)注這個(gè)類的定位的時(shí)候,就不要用@Component來標(biāo)注。
2、@Transactional: 通過這個(gè)注解可以聲明事務(wù),可以添加在類上或者方法上。
在spring boot中 不用再單獨(dú)配置事務(wù)管理,一般情況是我們會在servcie層添加了事務(wù)注解,即可開啟事務(wù)。要注意的是,事務(wù)的開啟只能在public 方法上。并且主要事務(wù)切面的回滾條件。正常我們配置rollbackfor exception時(shí) ,如果在方法里捕獲了異常就會導(dǎo)致事務(wù)切面配置的失效。
@ControllerAdvice 和 @RestControllerAdvice:通常和@ExceptionHandler、@InitBinder、@ModelAttribute一起配合使用。
@ControllerAdvice 和 @ExceptionHandler 配合完成統(tǒng)一異常攔截處理。
@RestControllerAdvice 是 @ControllerAdvice 和 @ResponseBody的合集,可以將異常以json的格式返回?cái)?shù)據(jù)。
如下面對數(shù)據(jù)異常返回的統(tǒng)一處理。
上述就是小編為大家分享的spring boot的核心注解有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
本文名稱:springboot的核心注解有哪些-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://aaarwkj.com/article4/gdjie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、App開發(fā)、軟件開發(fā)、靜態(tài)網(wǎng)站、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容