在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SpringBoot常用注解及使用方法1

jf_78858299 ? 來源:Java極客技術 ? 作者:鴨血粉絲Tang ? 2023-04-07 11:51 ? 次閱讀

一、簡介

基于 SpringBoot 平臺開發的項目數不勝數,與常規的基于Spring開發的項目最大的不同之處,SpringBoot 里面提供了大量的注解用于快速開發,而且非常簡單,基本可以做到開箱即用!

那 SpringBoot 為開發者提供了多少注解呢?我們該如何使用?

針對此問題,小編特意對其進行了一番整理,內容如下,個人感覺還是比較清晰的,今天我們就一起來整一整每個注解的含義和用法,以免踩坑!

二、注解總結

2.1、SpringMVC 相關注解

  • @Controller

通常用于修飾controller層的組件,由控制器負責將用戶發來的URL請求轉發到對應的服務接口,通常還需要配合注解@RequestMapping使用。

  • @RequestMapping

提供路由信息,負責URLController中具體函數的映射,當用于方法上時,可以指定請求協議,比如GETPOSTPUTDELETE等等。

  • @RequestBody

表示請求體的Content-Type必須為application/json格式的數據,接收到數據之后會自動將數據綁定到Java對象上去

  • @ResponseBody

表示該方法的返回結果直接寫入HTTP response body中,返回數據的格式為application/json

比如,請求參數json格式,返回參數也為json格式,示例代碼如下:

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

@Controller一樣,用于標注控制層組件,不同的地方在于:它是@ResponseBody@Controller的合集,也就是說,在當@RestController用在類上時,表示當前類里面所有對外暴露的接口方法,返回數據的格式都為application/json,示范代碼如下:

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

用于接收請求參數為表單類型的數據,通常用在方法的參數前面,示范代碼如下:

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

用于獲取請求路徑中的參數,通常用于restful風格的api上,示范代碼如下:

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

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

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

用在方法上,表示只支持post方式的請求。

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

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

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

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

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

2.2、bean 相關注解

  • @Service

通常用于修飾service層的組件,聲明一個對象,會將類對象實例化并注入到bean容器里面

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

泛指組件,當組件不好歸類的時候,可以使用這個注解進行標注,功能類似于于@Service

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

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

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

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

 //具體的方法
}

為什么現在使用的很少呢?

主要是因為當我們配置服務啟動自動掃描dao層包時,Spring會自動幫我們創建一個實現類,然后注入到bean容器里面。當某些類無法被掃描到時,我們可以顯式的在數據持久類上標注@Repository注解,Spring會自動幫我們聲明對象。

  • @Bean

相當于 xml 中配置 Bean,意思是產生一個 bean 對象,并交給spring管理,示例代碼如下:

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

}
  • @Autowired

自動導入依賴的bean對象,默認時按照byType方式導入對象,而且導入的對象必須存在,當需要導入的對象并不存在時,我們可以通過配置required = false來關閉強制驗證。

@Autowired
private DeptService deptService;
  • @Resource

也是自動導入依賴的bean對象, JDK提供 ,默認是按照byName方式導入依賴的對象;而@Autowired默認時按照byType方式導入對象,當然@Resource還可以配置成通過byType方式導入對象。

/**
 * 通過名稱導入(默認通過名稱導入依賴對象)
 */
@Resource(name = "deptService")
private DeptService deptService;

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

當有多個同一類型的bean時,使用@Autowired導入會報錯,提示當前對象并不是唯一,Spring不知道導入哪個依賴,這個時候,我們可以使用@Qualifier進行更細粒度的控制,選擇其中一個候選者,一般于@Autowired搭配使用,示例如下:

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

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

  • singleton:唯一 bean 實例,Spring 中的 bean 默認都是單例的。
  • prototype:每次請求都會創建一個新的 bean 實例,對象多例。
  • request:每一次 HTTP 請求都會產生一個新的 bean,該 bean 僅在當前 HTTP request 內有效。
  • session:每一次 HTTP 請求都會產生一個新的 bean,該 bean 僅在當前 HTTP session 內有效。
/**
 * 單例對象
 */
@RestController
@Scope("singleton")
public class HelloController {

}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14343
  • MVC
    MVC
    +關注

    關注

    0

    文章

    73

    瀏覽量

    13857
  • 開發者
    +關注

    關注

    1

    文章

    575

    瀏覽量

    17009
  • SpringBoot
    +關注

    關注

    0

    文章

    173

    瀏覽量

    178
收藏 人收藏

    評論

    相關推薦

    SpringBoot應用啟動運行run方法

    什么時候創建嵌入式的Servlet容器工廠?什么時候獲取嵌入式的Servlet容器并啟動Tomcat;獲取嵌入式的Servlet容器工廠:1)、SpringBoot應用啟動運行run方法2
    發表于 12-20 06:16

    HarmonyOS注解使用方法分享

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

    常用手機焊接工具使用方法

    常用手機焊接工具使用方法 主要學習以下幾點 1、掌握熱風槍和電烙鐵的使用方法。2、掌握手機小元件
    發表于 03-23 17:40 ?3.2w次閱讀

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

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

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

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

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

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

    Spring Boot常用注解與使用方式

    企業開發項目SpringBoot已經是必備框架了,其中注解是開發中的小工具(誰處可見哦),用好了開發效率大大提升,當然用錯了也會引入缺陷。
    的頭像 發表于 07-08 10:57 ?1370次閱讀

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

    什么是注解? 當我們開發SpringBoot項目,我們只需對啟動類加上`@SpringBootApplication`,就能自動裝配,不需要編寫冗余的xml配置。當我們為項目添加lombok
    的頭像 發表于 02-09 14:18 ?764次閱讀
    Java<b class='flag-5'>注解</b>及其底層原理解析 <b class='flag-5'>1</b>

    SpringBoot常用注解使用方法2

    基于 SpringBoot 平臺開發的項目數不勝數,與常規的基于Spring開發的項目最大的不同之處,SpringBoot 里面提供了大量的注解用于快速開發,而且非常簡單,基本可以做到開箱即用!
    的頭像 發表于 04-07 11:52 ?682次閱讀

    Springboot常用注解合集

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

    SpringBoot常用注解及原理

    SpringBootConfiguration繼承自@Configuration,二者功能也一致,標注當前類是配置類, 并會將當前類內聲明的一個或多個以@Bean注解標記的方法的實例納入到spring容器中,并且實例名就是方法
    的頭像 發表于 04-07 14:30 ?585次閱讀

    SpringBoot的核心注解1

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

    SpringBoot的核心注解2

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

    springmvc常用5種注解

    SpringMVC是一種基于Java的Web框架,使用注解可以更加方便靈活地開發和管理控制器,實現請求的映射和處理。在SpringMVC中,有許多常用注解,本文將詳細介紹其中的五種注解
    的頭像 發表于 11-22 16:51 ?898次閱讀

    springboot核心注解

    幫助開發者簡化開發過程,提高開發效率。本文將深入介紹 Spring Boot 的核心注解及其使用方法。 @SpringBootApplication @SpringBootApplication
    的頭像 發表于 11-23 09:23 ?524次閱讀
    主站蜘蛛池模板: 日日操夜夜操天天操| 狠狠插天天干| 亚洲最色网| 性日韩| 国产午夜视频在线观看网站| 亚洲免费色| 国内一级野外a一级毛片| 国产精品 色| 成人国产精品2021| 亚洲色图25p| 国产激烈床戏无遮挡观看| 激情综合五月天丁香婷婷| bl高h文| 狠狠涩| 35pao免费视频| 四虎4hu| 18一20岁一级毛片| 中文字幕亚洲一区二区va在线| 三级国产| 天天干天天草| 国产精品久久久久国产精品三级| 久久久久99精品成人片三人毛片| 久久网免费视频| 日本一区免费观看| 免费黄色大片| 福利视频免费看| 欧美一区高清| 精品一区视频| 网站黄色在线观看| 日韩成人一级| 奇米影视99| 五月婷婷影院| 五月天婷婷视频在线观看| 国产精品一级香蕉一区| 国产精品乳摇在线播放| 91啦视频在线| 精品色综合| sese综合| 狠狠色狠狠色综合日日32 | 天天草狠狠干| 伊人久久大香线蕉综合影|