色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SpringBoot常用注解及使用方法1

jf_78858299 ? 來(lái)源:Java極客技術(shù) ? 作者:鴨血粉絲Tang ? 2023-04-07 11:51 ? 次閱讀

一、簡(jiǎn)介

基于 SpringBoot 平臺(tái)開(kāi)發(fā)的項(xiàng)目數(shù)不勝數(shù),與常規(guī)的基于Spring開(kāi)發(fā)的項(xiàng)目最大的不同之處,SpringBoot 里面提供了大量的注解用于快速開(kāi)發(fā),而且非常簡(jiǎn)單,基本可以做到開(kāi)箱即用!

那 SpringBoot 為開(kāi)發(fā)者提供了多少注解呢?我們?cè)撊绾问褂茫?/p>

針對(duì)此問(wèn)題,小編特意對(duì)其進(jìn)行了一番整理,內(nèi)容如下,個(gè)人感覺(jué)還是比較清晰的,今天我們就一起來(lái)整一整每個(gè)注解的含義和用法,以免踩坑!

二、注解總結(jié)

2.1、SpringMVC 相關(guān)注解

  • @Controller

通常用于修飾controller層的組件,由控制器負(fù)責(zé)將用戶發(fā)來(lái)的URL請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的服務(wù)接口,通常還需要配合注解@RequestMapping使用。

  • @RequestMapping

提供路由信息,負(fù)責(zé)URLController中具體函數(shù)的映射,當(dāng)用于方法上時(shí),可以指定請(qǐng)求協(xié)議,比如GETPOSTPUTDELETE等等。

  • @RequestBody

表示請(qǐng)求體的Content-Type必須為application/json格式的數(shù)據(jù),接收到數(shù)據(jù)之后會(huì)自動(dòng)將數(shù)據(jù)綁定到Java對(duì)象上去

  • @ResponseBody

表示該方法的返回結(jié)果直接寫入HTTP response body中,返回?cái)?shù)據(jù)的格式為application/json

比如,請(qǐng)求參數(shù)json格式,返回參數(shù)也為json格式,示例代碼如下:

/**
 * 登錄服務(wù)
 */
@Controller
@RequestMapping("api")
public class LoginController {
 
    /**
     * 登錄請(qǐng)求,post請(qǐng)求協(xié)議,請(qǐng)求參數(shù)數(shù)據(jù)格式為json
     * @param request
     */
    @RequestMapping(value = "login", method = RequestMethod.POST)
    @ResponseBody
    public ResponseEntity login(@RequestBody UserLoginDTO request){
     //...業(yè)務(wù)處理
        return new ResponseEntity(HttpStatus.OK);
    }
}
  • @RestController

@Controller一樣,用于標(biāo)注控制層組件,不同的地方在于:它是@ResponseBody@Controller的合集,也就是說(shuō),在當(dāng)@RestController用在類上時(shí),表示當(dāng)前類里面所有對(duì)外暴露的接口方法,返回?cái)?shù)據(jù)的格式都為application/json,示范代碼如下:

@RestController
@RequestMapping("api")
public class LoginController {
 
    /**
     * 登錄請(qǐng)求,post請(qǐng)求協(xié)議,請(qǐng)求參數(shù)數(shù)據(jù)格式為json
     * @param request
     */
    @RequestMapping(value = "login", method = RequestMethod.POST)
    public ResponseEntity login(@RequestBody UserLoginDTO request){
        //...業(yè)務(wù)處理
        return new ResponseEntity(HttpStatus.OK);
    }
}
  • @RequestParam

用于接收請(qǐng)求參數(shù)為表單類型的數(shù)據(jù),通常用在方法的參數(shù)前面,示范代碼如下:

/**
 * 登錄請(qǐng)求,post請(qǐng)求協(xié)議,請(qǐng)求參數(shù)數(shù)據(jù)格式為表單
 */
@RequestMapping(value = "login", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity login(@RequestParam(value = "userName",required = true) String userName,
                            @RequestParam(value = "userPwd",required = true) String userPwd){
    //...業(yè)務(wù)處理
    return new ResponseEntity(HttpStatus.OK);
}
  • @PathVariable

用于獲取請(qǐng)求路徑中的參數(shù),通常用于restful風(fēng)格的api上,示范代碼如下:

/**
 * restful風(fēng)格的參數(shù)請(qǐng)求
 * @param id
 */
@RequestMapping(value = "queryProduct/{id}", method = RequestMethod.POST)
@ResponseBody
public ResponseEntity queryProduct(@PathVariable("id") String id){
    //...業(yè)務(wù)處理
    return new ResponseEntity(HttpStatus.OK);
}
  • @GetMapping

除了@RequestMapping可以指定請(qǐng)求方式之外,還有一些其他的注解,可以用于標(biāo)注接口路徑請(qǐng)求,比如GetMapping用在方法上時(shí),表示只支持get請(qǐng)求方法,等價(jià)于@RequestMapping(value="/get",method=RequestMethod.GET)

@GetMapping("get")
public ResponseEntity get(){
    return new ResponseEntity(HttpStatus.OK);
}
  • @PostMapping

用在方法上,表示只支持post方式的請(qǐng)求。

@PostMapping("post")
public ResponseEntity post(){
    return new ResponseEntity(HttpStatus.OK);
}
  • @PutMapping

用在方法上,表示只支持put方式的請(qǐng)求,通常表示更新某些資源的意思

@PutMapping("put")
public ResponseEntity put(){
    return new ResponseEntity(HttpStatus.OK);
}
  • @DeleteMapping

用在方法上,表示只支持delete方式的請(qǐng)求,通常表示刪除某些資源的意思

@DeleteMapping("delete")
public ResponseEntity delete(){
    return new ResponseEntity(HttpStatus.OK);
}

2.2、bean 相關(guān)注解

  • @Service

通常用于修飾service層的組件,聲明一個(gè)對(duì)象,會(huì)將類對(duì)象實(shí)例化并注入到bean容器里面

@Service
public class DeptService {
 
 //具體的方法
}
  • @Component

泛指組件,當(dāng)組件不好歸類的時(shí)候,可以使用這個(gè)注解進(jìn)行標(biāo)注,功能類似于于@Service

@Component
public class DeptService {
 
 //具體的方法
}
  • @Repository

通常用于修飾dao層的組件,

@Repository注解屬于Spring里面最先引入的一批注解,它用于將數(shù)據(jù)訪問(wèn)層 (DAO層 ) 的類標(biāo)識(shí)為Spring Bean,具體只需將該注解標(biāo)注在 DAO類上即可,示例代碼如下:

@Repository
public interface RoleRepository extends JpaRepository<Role,Long> {

 //具體的方法
}

為什么現(xiàn)在使用的很少呢?

主要是因?yàn)楫?dāng)我們配置服務(wù)啟動(dòng)自動(dòng)掃描dao層包時(shí),Spring會(huì)自動(dòng)幫我們創(chuàng)建一個(gè)實(shí)現(xiàn)類,然后注入到bean容器里面。當(dāng)某些類無(wú)法被掃描到時(shí),我們可以顯式的在數(shù)據(jù)持久類上標(biāo)注@Repository注解,Spring會(huì)自動(dòng)幫我們聲明對(duì)象。

  • @Bean

相當(dāng)于 xml 中配置 Bean,意思是產(chǎn)生一個(gè) bean 對(duì)象,并交給spring管理,示例代碼如下:

@Configuration
public class AppConfig {
 
   //相當(dāng)于 xml 中配置 Bean
    @Bean
    public Uploader initFileUploader() {
        return new FileUploader();
    }

}
  • @Autowired

自動(dòng)導(dǎo)入依賴的bean對(duì)象,默認(rèn)時(shí)按照byType方式導(dǎo)入對(duì)象,而且導(dǎo)入的對(duì)象必須存在,當(dāng)需要導(dǎo)入的對(duì)象并不存在時(shí),我們可以通過(guò)配置required = false來(lái)關(guān)閉強(qiáng)制驗(yàn)證。

@Autowired
private DeptService deptService;
  • @Resource

也是自動(dòng)導(dǎo)入依賴的bean對(duì)象, JDK提供 ,默認(rèn)是按照byName方式導(dǎo)入依賴的對(duì)象;而@Autowired默認(rèn)時(shí)按照byType方式導(dǎo)入對(duì)象,當(dāng)然@Resource還可以配置成通過(guò)byType方式導(dǎo)入對(duì)象。

/**
 * 通過(guò)名稱導(dǎo)入(默認(rèn)通過(guò)名稱導(dǎo)入依賴對(duì)象)
 */
@Resource(name = "deptService")
private DeptService deptService;

/**
 * 通過(guò)類型導(dǎo)入
 */
@Resource(type = RoleRepository.class)
private DeptService deptService;
  • @Qualifier

當(dāng)有多個(gè)同一類型的bean時(shí),使用@Autowired導(dǎo)入會(huì)報(bào)錯(cuò),提示當(dāng)前對(duì)象并不是唯一,Spring不知道導(dǎo)入哪個(gè)依賴,這個(gè)時(shí)候,我們可以使用@Qualifier進(jìn)行更細(xì)粒度的控制,選擇其中一個(gè)候選者,一般于@Autowired搭配使用,示例如下:

@Autowired
@Qualifier("deptService")
private DeptService deptService;
  • @Scope

用于生命一個(gè)spring bean的作用域,作用的范圍一共有以下幾種:

  • singleton:唯一 bean 實(shí)例,Spring 中的 bean 默認(rèn)都是單例的。
  • prototype:每次請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的 bean 實(shí)例,對(duì)象多例。
  • request:每一次 HTTP 請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的 bean,該 bean 僅在當(dāng)前 HTTP request 內(nèi)有效。
  • session:每一次 HTTP 請(qǐng)求都會(huì)產(chǎn)生一個(gè)新的 bean,該 bean 僅在當(dāng)前 HTTP session 內(nèi)有效。
/**
 * 單例對(duì)象
 */
@RestController
@Scope("singleton")
public class HelloController {

}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    14368
  • MVC
    MVC
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    13890
  • 開(kāi)發(fā)者
    +關(guān)注

    關(guān)注

    1

    文章

    590

    瀏覽量

    17056
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    174

    瀏覽量

    193
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SpringBoot應(yīng)用啟動(dòng)運(yùn)行run方法

    什么時(shí)候創(chuàng)建嵌入式的Servlet容器工廠?什么時(shí)候獲取嵌入式的Servlet容器并啟動(dòng)Tomcat;獲取嵌入式的Servlet容器工廠:1)、SpringBoot應(yīng)用啟動(dòng)運(yùn)行run方法2
    發(fā)表于 12-20 06:16

    HarmonyOS注解使用方法分享

    定義我們的注解自定義注解1、聲明注解功能:檢測(cè)類中是否有規(guī)范的get方法新建java libray的module,命名為annotation
    發(fā)表于 03-28 14:04

    常用手機(jī)焊接工具使用方法

    常用手機(jī)焊接工具使用方法 主要學(xué)習(xí)以下幾點(diǎn) 1、掌握熱風(fēng)槍和電烙鐵的使用方法。2、掌握手機(jī)小元件
    發(fā)表于 03-23 17:40 ?3.3w次閱讀

    示波器探頭常用附件的使用方法

    示波器探頭常用附件的使用方法
    發(fā)表于 01-22 13:38 ?25次下載

    Keil的使用方法 - 常用功能(二)

    Keil的使用方法 - 常用功能(二)
    的頭像 發(fā)表于 04-07 14:55 ?3365次閱讀
    Keil的<b class='flag-5'>使用方法</b> -  <b class='flag-5'>常用</b>功能(二)

    Keil的使用方法 - 常用功能(一)

    Keil的使用方法 - 常用功能(一)
    的頭像 發(fā)表于 04-07 14:51 ?8882次閱讀
    Keil的<b class='flag-5'>使用方法</b> -  <b class='flag-5'>常用</b>功能(一)

    Spring Boot常用注解與使用方式

    企業(yè)開(kāi)發(fā)項(xiàng)目SpringBoot已經(jīng)是必備框架了,其中注解是開(kāi)發(fā)中的小工具(誰(shuí)處可見(jiàn)哦),用好了開(kāi)發(fā)效率大大提升,當(dāng)然用錯(cuò)了也會(huì)引入缺陷。
    的頭像 發(fā)表于 07-08 10:57 ?1411次閱讀

    Java注解及其底層原理解析 1

    什么是注解? 當(dāng)我們開(kāi)發(fā)SpringBoot項(xiàng)目,我們只需對(duì)啟動(dòng)類加上`@SpringBootApplication`,就能自動(dòng)裝配,不需要編寫冗余的xml配置。當(dāng)我們?yōu)轫?xiàng)目添加lombok
    的頭像 發(fā)表于 02-09 14:18 ?788次閱讀
    Java<b class='flag-5'>注解</b>及其底層原理解析 <b class='flag-5'>1</b>

    SpringBoot常用注解使用方法2

    基于 SpringBoot 平臺(tái)開(kāi)發(fā)的項(xiàng)目數(shù)不勝數(shù),與常規(guī)的基于Spring開(kāi)發(fā)的項(xiàng)目最大的不同之處,SpringBoot 里面提供了大量的注解用于快速開(kāi)發(fā),而且非常簡(jiǎn)單,基本可以做到開(kāi)箱即用!
    的頭像 發(fā)表于 04-07 11:52 ?711次閱讀

    Springboot常用注解合集

    前幾章,在系統(tǒng)啟動(dòng)類里面,都加入了此啟動(dòng)注解,此注解是個(gè)組合注解,包括了`@SpringBootConfiguration`、`@EnableAutoConfiguration`和`@ComponentScan`
    的頭像 發(fā)表于 04-07 14:27 ?762次閱讀
    <b class='flag-5'>Springboot</b><b class='flag-5'>常用</b><b class='flag-5'>注解</b>合集

    SpringBoot常用注解及原理

    SpringBootConfiguration繼承自@Configuration,二者功能也一致,標(biāo)注當(dāng)前類是配置類, 并會(huì)將當(dāng)前類內(nèi)聲明的一個(gè)或多個(gè)以@Bean注解標(biāo)記的方法的實(shí)例納入到spring容器中,并且實(shí)例名就是方法
    的頭像 發(fā)表于 04-07 14:30 ?610次閱讀

    SpringBoot的核心注解1

    今天跟大家來(lái)探討下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot為什么不需要XML,達(dá)到零配置
    的頭像 發(fā)表于 04-07 14:34 ?723次閱讀
    <b class='flag-5'>SpringBoot</b>的核心<b class='flag-5'>注解</b><b class='flag-5'>1</b>

    SpringBoot的核心注解2

    今天跟大家來(lái)探討下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot為什么不需要XML,達(dá)到零配置
    的頭像 發(fā)表于 04-07 14:34 ?1981次閱讀
    <b class='flag-5'>SpringBoot</b>的核心<b class='flag-5'>注解</b>2

    springmvc常用5種注解

    SpringMVC是一種基于Java的Web框架,使用注解可以更加方便靈活地開(kāi)發(fā)和管理控制器,實(shí)現(xiàn)請(qǐng)求的映射和處理。在SpringMVC中,有許多常用注解,本文將詳細(xì)介紹其中的五種注解
    的頭像 發(fā)表于 11-22 16:51 ?944次閱讀

    springboot核心注解

    幫助開(kāi)發(fā)者簡(jiǎn)化開(kāi)發(fā)過(guò)程,提高開(kāi)發(fā)效率。本文將深入介紹 Spring Boot 的核心注解及其使用方法。 @SpringBootApplication @SpringBootApplication
    的頭像 發(fā)表于 11-23 09:23 ?548次閱讀
    主站蜘蛛池模板: 免费久久狼人香蕉网 | 一区二区三区内射美女毛片 | 国产剧情在线精品视频不卡 | 毛片视频大全 | 538视频这里只有精品 | 亚洲精品国产一区二区贰佰信息网 | 亚洲精品日韩在线观看视频 | 粉嫩极品国产在线观看 | 国产视频精品免费 | 欧美亚洲精品一区二三区8V | 国产香蕉视频在线观看 | 日日碰狠狠添天天爽 | 国产亚洲精品97在线视频一 | 动漫美女3d被爆漫画 | 最新国产在线视频在线 | 快播电影网址 | 99国产亚洲精品无码成人 | WW.国产人妻人伦精品 | 国产精品手机在线视频 | 国产AV在线传媒麻豆 | 国模玲玲自拍337p | 久久人妻少妇嫩草AV蜜桃99 | 国产成人午夜精品免费视频 | 亚洲精品第一综合99久久 | 亚洲精品www久久久久久久软件 | 国产AV高清怡春院 | 青青视频 在线 在线播放 | 最近2019中文字幕免费 | 无码一区二区三区 | 爱人 qvod| 欧美97色伦影院在线观看 | 日韩精品 电影一区 亚洲高清 | 日本人的xxxxxxxxx69 | 亚洲日本在线不卡二区 | 伦理片97影视网 | 精品一二三区久久AAA片 | 空姐内射出白浆10p 空姐厕所啪啪啪 | 浪潮色诱AV久久久久久久 | 亚洲精品久久99蜜芽尤物TV | H厨房灌草莓 | 成人无码国产AV免费看 |