中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot中常用的注解有哪些

發布時間:2021-12-11 15:28:48 來源:億速云 閱讀:518 作者:小新 欄目:開發技術

這篇文章主要介紹了SpringBoot中常用的注解有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一、@SpringBootApplication

此注解是Spring Boot項目的基石,創建SpringBoot項目的Application時會默認加上

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

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

@EnableAutoConfiguration:啟用SpringBoot的自動配置機制

@ComponentScan:掃描被@Component /@Service/@Controller注解的bean,注解默認會掃描該類所在的包下所有類

@Configuration:允許在Spring上下文中注冊額外的bean或導入其他配置類

二、@Bean

Bean對象注冊Spring IOC容器與使用bean對象是整個Spring框架的重點,其中@Bean就是一個將方法作為Spring Bean對象注冊的一種方式

package com.edu.fruit;
 //定義一個接口
public interface Fruit<T>{
    //沒有方法
} 
/*
*定義兩個子類
*/
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類型
}
/*
*業務邏輯類
*/
package com.edu.service;
@Configuration
public class FruitService {
	@Autowired
	private Apple apple;
	@Autowired
	private GinSeng ginseng;
	//定義一個產生Bean的方法
	@Bean(name="getApple")
	public Fruit<?> getApple(){
		System.out.println(apple.getClass().getName().hashCode);
	  	System.out.println(ginseng.getClass().getName().hashCode);
		return new Apple();
	}
}
/*
*測試類
*/
@RunWith(BlockJUnit4ClassRunner.class)
public class Config {
    public Config(){
        super("classpath:spring-fruit.xml");
    }
    @Test
    public void test(){
        super.getBean("getApple");//這個Bean從哪來,
        //從上面的@Bean下面的方法中返回的是一個Apple類實例對象
    }
}

三、@Autowired

@Autowired自動注入注解,最常用的一種注解將對象自動導入到類中,注解自動裝配bean的類

四、Component家族

@Component:通用注解,當不知道Bean在哪一層時,可以使用@Component注解標注。
@Repository: 對應持久層—Dao層的注解,用于操作數據庫相關
@Service: 對應服務層的注解,用來連接Dao層做邏輯處理
@Controller:對應Spring MVC控制層,主要接收用戶請求并調用service返回給前端頁面

五、@RestController

@RestController注解是@Controller注解和@ResponseBody注解的合集,用來返回Json格式給頁面(帶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請求的最通用注解

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

八、@GetMapping

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

九、@Configuration

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

即使用@GetMapping就相當用接收GET方法了

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

十、@PostMapping

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

即使用@PostMapping就相當用接收Post方法了

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

十一、@PutMapping

@PutMapping("/users/{userId}")等價于@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}")等價于@RequestMapping(value ="/users/{userId}",method = RequestMethod.DELETE)

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

十三、@ParhVariable和@RequestParam

@PathVariable 用于獲取路徑參數, @RequestParam用于獲取查詢參數

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

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

比如我們url請求中/users/{123456}/teachers?type=Chinese 則我們在Controller獲取到的就是userId = 123456 , type = Chinese

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

十四、@RequestBody

用于讀取Request請求的body部分,且Content-Type為application/json格式數據,接收到數據后會自動將數據綁定在Java對象上,系統會使用HttpMessageConverter來講請求的body中的json字符串轉換為Java對象

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

SpringBoot中常用的注解有哪些

這就是典型的RequestBody在Post請求里進行傳輸數據當后端Controller接收到json格式的數據后,直接就會生成Java對象映射到UserRegisterRequest類上,這樣就可以直接將userRegisterRequest對象進行存儲。順便說一下@Valid注解是用

來驗證數據格式是否符合要求,如果符合要求則通過,不符合要求,提示注解中message信息

十五、讀取配置信息

讀取application.yml的注解

wuhan2020: 武漢加油!中國加油!

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}")讀取簡單的配置信息

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

2.@ConfigurationProperties

通過@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

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

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

十七、@MapperScan

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

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

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

SpringBoot中常用的注解有哪些

十八、@CrossOrigin

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

十九、@ControllerAdvice

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

@ControllerAdvice 和 @ExceptionHandler 配合完成統一異常攔截處理。

@RestControllerAdvice 是 @ControllerAdvice 和 @ResponseBody的合集,可以將異常以json的格式返回數據。

如下面對數據異常返回的統一處理。

SpringBoot中常用的注解有哪些

二十、資源導入注解

@ImportResource @Import @PropertySource 這三個注解都是用來導入自定義的一些配置文件。

@ImportResource(locations={}) 導入其他xml配置文件,需要標準在主配置類上。

導入property的配置文件 @PropertySource指定文件路徑,這個相當于使用spring的標簽來完成配置項的引入。

@import注解是一個可以將普通類導入到spring容器中做管理

二十一、@Transactional

通過這個注解可以聲明事務,可以添加在類上或者方法上。

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

里捕獲了異常就會導致事務切面配置的失效。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“SpringBoot中常用的注解有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泊头市| 乐业县| 偏关县| 封开县| 响水县| 红原县| 科技| 开封市| 永福县| 当雄县| 五家渠市| 通榆县| 隆子县| 岱山县| 屏边| 利津县| 依安县| 临夏县| 安仁县| 晋城| 合川市| 手游| 连平县| 亚东县| 辽源市| 汕头市| 科尔| 乌拉特前旗| 桐城市| 汝南县| 陆河县| 沙雅县| 轮台县| 永登县| 玉田县| 厦门市| 祁东县| 伊金霍洛旗| 新化县| 梓潼县| 九江市|