欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot常用注解詳細(xì)整理

 更新時(shí)間:2021年12月07日 16:21:18   作者:擁有必珍惜  
大家好,本篇文章主要講的是SpringBoot常用注解詳細(xì)整理,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

前言

Spring Boot常用注解整理

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、@SpringBootApplication

此注解是Spring Boot項(xiàng)目的基石,創(chuàng)建SpringBoot項(xiàng)目的Application時(shí)會(huì)默認(rèn)加上

@SpringBootApplication
public class SpringSecurityApplication{
    public static void main(Strings[] args){
        SpringApplication.run(SpringSecurityApplication,args);
    }
}

@SpringBootApplication 看作@Configuration,@EnableAutoConfiguration,@ComponentScan 注解的集合

@EnableAutoConfiguration:?jiǎn)⒂肧pringBoot的自動(dòng)配置機(jī)制

@ComponentScan:掃描被@Component /@Service/@Controller注解的bean,注解默認(rèn)會(huì)掃描該類所在的包下所有類

@Configuration:允許在Spring上下文中注冊(cè)額外的bean或?qū)肫渌渲妙?/p>

二、@Bean

Bean對(duì)象注冊(cè)Spring IOC容器與使用bean對(duì)象是整個(gè)Spring框架的重點(diǎn),其中@Bean就是一個(gè)將方法作為Spring Bean對(duì)象注冊(cè)的一種方式

package com.edu.fruit;
 //定義一個(gè)接口
public interface Fruit<T>{
    //沒(méi)有方法
} 
/*
*定義兩個(gè)子類
*/
package com.edu.fruit;
@Configuration
 public class Apple implements Fruit<Integer>{//將Apple類約束為Integer類型

}

package com.edu.fruit;
@Configuration
public class GinSeng implements Fruit<String>{//將GinSeng 類約束為String類型
}
/*
*業(yè)務(wù)邏輯類
*/
package com.edu.service;
@Configuration
public class FruitService {
	@Autowired
	private Apple apple;
	@Autowired
	private GinSeng ginseng;
	//定義一個(gè)產(chǎn)生Bean的方法
	@Bean(name="getApple")
	public Fruit<?> getApple(){
		System.out.println(apple.getClass().getName().hashCode);
	  	System.out.println(ginseng.getClass().getName().hashCode);
		return new Apple();
	}
}
/*
*測(cè)試類
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class Config {
    public Config(){
        super("classpath:spring-fruit.xml");
    }
    @Test
    public void test(){
        super.getBean("getApple");//這個(gè)Bean從哪來(lái),
        //從上面的@Bean下面的方法中返回的是一個(gè)Apple類實(shí)例對(duì)象
    }
}

三、@Autowired

@Autowired自動(dòng)注入注解,最常用的一種注解將對(duì)象自動(dòng)導(dǎo)入到類中,注解自動(dòng)裝配bean的類

四、Component家族

@Component:通用注解,當(dāng)不知道Bean在哪一層時(shí),可以使用@Component注解標(biāo)注。
@Repository: 對(duì)應(yīng)持久層—Dao層的注解,用于操作數(shù)據(jù)庫(kù)相關(guān)
@Service: 對(duì)應(yīng)服務(wù)層的注解,用來(lái)連接Dao層做邏輯處理
@Controller:對(duì)應(yīng)Spring MVC控制層,主要接收用戶請(qǐng)求并調(diào)用service返回給前端頁(yè)面

五、@RestController

@RestController注解是@Controller注解和@ResponseBody注解的合集,用來(lái)返回Json格式給頁(yè)面(帶Rest格式的就是返回的Json文本)

六、@Scope

聲明Spring Bean的作用域

@Scope("singleton")
public Person personSingleton(){
    return new Person();
}

Spring Bean的四種作用域:singleton,prototype,request,session

七、@Configuration

一般聲明配置類,使用@Component或者@Configuration

@Configurantion
public class AppConfig{
    @Bean
    public TransferService transferService(){
        return new TransferServiceImpl();
    }
}

八、@RequsetMapping

@RequsetMapping是處理HTTP請(qǐng)求的最通用注解

@RequestMapping("/users")
public ResponseEntity<List<User>> getAllUsers(){
    return userRepository.findAll();
}

八、@GetMapping

一般聲明配置類,使用@Component或者@Configuration

九、@Configuration

@GetMapping 就等價(jià)于@RequestMapping(value="/users",method =RequsetMethod.GET)

即使用@GetMapping就相當(dāng)用接收GET方法了

@GetMapping("/users")
public ResponseEntity<List<User>> getAllUsers(){
    return userRepository.findAll();
}

十、@PostMapping

@PostMapping 就等價(jià)于@RequestMapping(value="/users",method =RequsetMethod.POST)

即使用@PostMapping就相當(dāng)用接收Post方法了

@PostMapping("/users")
public ResponseEntity<List<User>> getAllUsers(){
    return userRepository.findAll();
}

十一、@PutMapping

@PutMapping("/users/{userId}")等價(jià)于@RequestMapping(value = “/users/{userId}”,method = RequestMethod.PUT)

@PutMapping("/users/{userId}")
public ResponseEntity<User> updateUser(@PathVariable (value ="userId")Long userId, @Valid @RequestBody UserUpdateRequest userUpdateRequest){
...
}

十二、@DeleteMapping

@DeleteMapping("/users/{userId}")等價(jià)于@RequestMapping(value ="/users/{userId}",method = RequestMethod.DELETE)

@DeleteMapping("/users/{userId}")
public ResponseEntity deleteUser(@PathVariable(value = "userId) Long userId){
...
}

十三、@ParhVariable和@RequestParam

@PathVariable 用于獲取路徑參數(shù), @RequestParam用于獲取查詢參數(shù)

@GetMapping("/users/{userId}/teachers")
public List<Teacher> getUserRelatedTeachers(@PathVariable("userId") Long userId,@RequestParam(value = "type",required = false) String type){
...
}

其中@PathVariable是獲取請(qǐng)求中的{userId}值,@RequestParam則是url讀取請(qǐng)求中type的值

比如我們url請(qǐng)求中/users/{123456}/teachers?type=Chinese 則我們?cè)贑ontroller獲取到的就是userId = 123456 , type = Chinese

另在@RequestParam中 value=“參數(shù)名” required = “true/false”(true表示參數(shù)不允許不存在,false表示參數(shù)允許不存在) defaultValue="" 設(shè)置defaultValue時(shí)默認(rèn)required為false。

十四、@RequestBody

用于讀取Request請(qǐng)求的body部分,且Content-Type為application/json格式數(shù)據(jù),接收到數(shù)據(jù)后會(huì)自動(dòng)將數(shù)據(jù)綁定在Java對(duì)象上,系統(tǒng)會(huì)使用HttpMessageConverter來(lái)講請(qǐng)求的body中的json字符串轉(zhuǎn)換為Java對(duì)象

@PostMapping("/sing-up")
public ResponseEntity signUp(@RequsetBody @Valid UserRegisterRequest userRegisterRequest){
    userService.save(userRegisterRequest);
    return ResponseEntity.ok().build()'
}

在這里插入圖片描述

這就是典型的RequestBody在Post請(qǐng)求里進(jìn)行傳輸數(shù)據(jù)當(dāng)后端Controller接收到j(luò)son格式的數(shù)據(jù)后,直接就會(huì)生成Java對(duì)象映射到UserRegisterRequest類上,這樣就可以直接將userRegisterRequest對(duì)象進(jìn)行存儲(chǔ)。順便說(shuō)一下@Valid注解是用

來(lái)驗(yàn)證數(shù)據(jù)格式是否符合要求,如果符合要求則通過(guò),不符合要求,提示注解中message信息

十五、讀取配置信息

讀取application.yml的注解

wuhan2020: 武漢加油!中國(guó)加油!

my-profile:
  name: name
  email: XXXX@qq.com

library:
  location: dalian
  books:
    - name: name1
      description: description1
    - name: name2
      description: description2
    - name: name3
      description: description3

1.@Value

使用@Value("${property}")讀取簡(jiǎn)單的配置信息

@Value("${wuhan2020}")
String wuhan2020;

2.@ConfigurationProperties

通過(guò)@ConfigurationProperties讀取配置信息并與bean綁定

@Component
@ConfigurationProperties(prefix = "library")
class LibraryProperties{
    @NotEmpty
    private String location;
    private List<Book> books;
    @Data
    @ToString
    static class Book{
        String name;
        String description;
    }
}

十六、@Qualifier

當(dāng)有多個(gè)同一類型的Bean時(shí),可以用@Qualifier(“name”)來(lái)指定。與@Autowired配合使用。@Qualifier限定描述符除了能根據(jù)名字進(jìn)行注入,但能進(jìn)行更細(xì)粒度的控制如何選擇候選者,具體使用方式如下:

@Autowired 
@Qualifier(value = “demoInfoService”) 
private DemoInfoService demoInfoService;

十七、@MapperScan

spring-boot支持mybatis組件的一個(gè)注解,通過(guò)此注解指定mybatis接口類的路徑,即可完成對(duì)mybatis接口的掃描。

它和@mapper注解是一樣的作用,不同的地方是掃描入口不一樣。@mapper需要加在每一個(gè)mapper接口類上面。所以大多數(shù)情況下,都是在規(guī)劃好工程目錄之后,通過(guò)@MapperScan注解配置路徑完成mapper接口的注入。

添加mybatis相應(yīng)組建依賴之后。就可以使用該注解。

在這里插入圖片描述

十八、@CrossOrigin

@CrossOrigin(origins = “”, maxAge = 1000) 這個(gè)注解主要是為了解決跨域訪問(wèn)的問(wèn)題。這個(gè)注解可以為整個(gè)controller配置啟用跨域,也可以在方法級(jí)別啟用。

十九、@ControllerAdvice

@ControllerAdvice 和 @RestControllerAdvice:通常和@ExceptionHandler、@InitBinder、@ModelAttribute一起配合使用。

@ControllerAdvice 和 @ExceptionHandler 配合完成統(tǒng)一異常攔截處理。

@RestControllerAdvice 是 @ControllerAdvice 和 @ResponseBody的合集,可以將異常以json的格式返回?cái)?shù)據(jù)。

如下面對(duì)數(shù)據(jù)異常返回的統(tǒng)一處理。

在這里插入圖片描述

二十、資源導(dǎo)入注解

@ImportResource @Import @PropertySource 這三個(gè)注解都是用來(lái)導(dǎo)入自定義的一些配置文件。

@ImportResource(locations={}) 導(dǎo)入其他xml配置文件,需要標(biāo)準(zhǔn)在主配置類上。

導(dǎo)入property的配置文件 @PropertySource指定文件路徑,這個(gè)相當(dāng)于使用spring的標(biāo)簽來(lái)完成配置項(xiàng)的引入。

@import注解是一個(gè)可以將普通類導(dǎo)入到spring容器中做管理

二十一、@Transactional

通過(guò)這個(gè)注解可以聲明事務(wù),可以添加在類上或者方法上。

在spring boot中 不用再單獨(dú)配置事務(wù)管理,一般情況是我們會(huì)在servcie層添加了事務(wù)注解,即可開啟事務(wù)。要注意的是,事務(wù)的開啟只能在public 方法上。并且主要事務(wù)切面的回滾條件。正常我們配置rollbackfor exception時(shí) ,如果在方法

里捕獲了異常就會(huì)導(dǎo)致事務(wù)切面配置的失效。

總結(jié)

到此這篇關(guān)于SpringBoot常用注解詳細(xì)整理的文章就介紹到這了,更多相關(guān)SpringBoot常用注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot 過(guò)濾器與攔截器實(shí)例演示

    SpringBoot 過(guò)濾器與攔截器實(shí)例演示

    本文通過(guò)示例代碼給大家講解SpringBoot 過(guò)濾器與攔截器的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • 初識(shí)Java8中的Stream

    初識(shí)Java8中的Stream

    lambda表達(dá)式是stream的基礎(chǔ),接下來(lái)通過(guò)實(shí)例代碼給大家詳細(xì)介紹java8中的stream,感興趣的朋友一起看看吧
    2017-08-08
  • Java?延時(shí)隊(duì)列及簡(jiǎn)單使用方式詳解

    Java?延時(shí)隊(duì)列及簡(jiǎn)單使用方式詳解

    這篇文章主要介紹了Java延時(shí)隊(duì)列簡(jiǎn)單使用方式,通過(guò)本文學(xué)習(xí)知道延時(shí)隊(duì)列是什么可以用來(lái)干什么,本文通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • mybatisplus 的SQL攔截器實(shí)現(xiàn)關(guān)聯(lián)查詢功能

    mybatisplus 的SQL攔截器實(shí)現(xiàn)關(guān)聯(lián)查詢功能

    大家都知道m(xù)ybatisplus不支持關(guān)聯(lián)查詢,后來(lái)學(xué)習(xí)研究發(fā)現(xiàn)mybatisplus的SQL攔截器可以實(shí)現(xiàn)這一操作,下面小編給大家分享我的demo實(shí)現(xiàn)基本的關(guān)聯(lián)查詢功能沒(méi)有問(wèn)題,對(duì)mybatisplus關(guān)聯(lián)查詢相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-06
  • Java多線程之徹底搞懂線程池

    Java多線程之徹底搞懂線程池

    熟悉 Java 多線程編程的同學(xué)都知道,當(dāng)我們線程創(chuàng)建過(guò)多時(shí),容易引發(fā)內(nèi)存溢出,因此我們就有必要使用線程池的技術(shù)了。想要詳細(xì)了解的同學(xué)可以參考閱讀本文
    2023-03-03
  • Java獲取時(shí)間如何將當(dāng)前時(shí)間減一天、一月、一年、并格式化

    Java獲取時(shí)間如何將當(dāng)前時(shí)間減一天、一月、一年、并格式化

    這篇文章主要介紹了Java獲取時(shí)間,將當(dāng)前時(shí)間減一天、一月、一年,并加以格式化,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • springboot如何使用@ConfigurationProperties封裝配置文件

    springboot如何使用@ConfigurationProperties封裝配置文件

    springboot如何使用@ConfigurationProperties封裝配置文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 簡(jiǎn)單了解JAVA變量類型及代碼實(shí)例

    簡(jiǎn)單了解JAVA變量類型及代碼實(shí)例

    這篇文章主要介紹了簡(jiǎn)單了解JAVA變量類型及代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java之Spring整合Junit

    Java之Spring整合Junit

    Java Spring框架是一個(gè)輕量級(jí)的開源框架,具有很高的凝聚力和吸引力,本篇文章帶你了解如何配置數(shù)據(jù)源、注解開發(fā)以及整合Junit
    2023-04-04
  • JDK19新特性使用實(shí)例詳解

    JDK19新特性使用實(shí)例詳解

    這篇文章主要為大家介紹了JDK19新特性使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論