SpringBoot常用注解详细整理

目录
  • 前言
  • 一、@SpringBootApplication
  • 二、@Bean
  • 三、@Autowired
  • 四、Component家族
  • 五、@RestController
  • 六、@Scope
  • 七、@Configuration
  • 八、@RequsetMapping
  • 八、@GetMapping
  • 九、@Configuration
  • 十、@PostMapping
  • 十一、@PutMapping
  • 十二、@DeleteMapping
  • 十三、@ParhVariable和@RequestParam
  • 十四、@RequestBody
  • 十五、读取配置信息
  • 十六、@Qualifier
  • 十七、@MapperScan
  • 十八、@CrossOrigin
  • 十九、@ControllerAdvice
  • 二十、资源导入注解
  • 二十一、@Transactional
  • 总结

前言

Spring Boot常用注解整理

提示:以下是本篇文章正文内容,下面案例可供参考

一、@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()'
}

这就是典型的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相应组建依赖之后。就可以使用该注解。

十八、@CrossOrigin

@CrossOrigin(origins = “”, maxAge = 1000) 这个注解主要是为了解决跨域访问的问题。这个注解可以为整个controller配置启用跨域,也可以在方法级别启用。

十九、@ControllerAdvice

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

@ControllerAdvice 和 @ExceptionHandler 配合完成统一异常拦截处理。

@RestControllerAdvice 是 @ControllerAdvice 和 @ResponseBody的合集,可以将异常以json的格式返回数据。

如下面对数据异常返回的统一处理。

二十、资源导入注解

@ImportResource @Import @PropertySource 这三个注解都是用来导入自定义的一些配置文件。

@ImportResource(locations={}) 导入其他xml配置文件,需要标准在主配置类上。

导入property的配置文件 @PropertySource指定文件路径,这个相当于使用spring的标签来完成配置项的引入。

@import注解是一个可以将普通类导入到spring容器中做管理

二十一、@Transactional

通过这个注解可以声明事务,可以添加在类上或者方法上。

在spring boot中 不用再单独配置事务管理,一般情况是我们会在servcie层添加了事务注解,即可开启事务。要注意的是,事务的开启只能在public 方法上。并且主要事务切面的回滚条件。正常我们配置rollbackfor exception时 ,如果在方法

里捕获了异常就会导致事务切面配置的失效。

总结

到此这篇关于SpringBoot常用注解详细整理的文章就介绍到这了,更多相关SpringBoot常用注解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • @SpringBootTest 注解报红问题及解决

    目录 打注解@SpringBootTest的时候不会出现提示 SpringBoot模块中启动类的注解标红 打注解@SpringBootTest的时候不会出现提示 但是又导入了 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 这个开发场景,于是我想

  • SpringBoot日志注解与缓存优化详解

    目录 日志注解: 缓存的优化: 总结 日志注解: 关于SpringBoot中的日志处理,在之前的文章中页写过: 点击进入 这次通过注解+Aop的方式来实现日志的输出: 首先需要定义一个注解类:  @Target(ElementType.METHOD)  @Retention(RetentionPolicy.RUNTIME)  @Documented  public @interface LogAnnotation {      String module() default "";  

  • Springboot常用注解及配置文件加载顺序详解

    Springboot常用注解及底层实现 1.@SpringBootApplication:这个注解标识了一个SpringBoot工程,她实际上是另外三个注解的组合,分别是: @SpringBootConfiguration:源码可以看到,这个注解除了元注解外,实际就只有一个@Configuration,把该类变成一个配置类,表示启动类也是一个配置类: @EnableAutoConfiguration:是开启自动配置的功能,向Spring容器中导入了一个Selector,用来加载ClassPath

  • SpringBoot常用注解详细整理

    目录 前言 一.@SpringBootApplication 二.@Bean 三.@Autowired 四.Component家族 五.@RestController 六.@Scope 七.@Configuration 八.@RequsetMapping 八.@GetMapping 九.@Configuration 十.@PostMapping 十一.@PutMapping 十二.@DeleteMapping 十三.@ParhVariable和@RequestParam 十四.@RequestB

  • Docker 常用命令详细整理

    Docker 常用命令详细整理 查看Docker信息(version.info) # 查看docker版本 $docker version # 显示docker系统的信息 $docker info 对image的操作(search.pull.images.rmi.history) # 检索image $docker search image_name # 下载image $docker pull image_name # 列出镜像列表; -a, --all=false Show all imag

  • Mysql常用命令 详细整理版

    Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 显示具体的表结构 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示. 显示当前mysql版本和当前日期 select

  • springBoot系列常用注解(小结)

    @PropertySource 作用是:对自定义的properties文件加载 使用:@PropertySource(value={"classpath:people.properties"})或者@PropertySource(value="classpath:people.properties") properties文件,获取到值乱码问题 乱码解决: file ->settings -->file encoding--> 勾选Transpar

  • spring常用注解开发一个RESTful接口示例

    目录 一.开发REST接口 1.第一步:定义资源(对象) 2.第二步:HTTP方法与Controller(动作) 二.统一规范接口响应的数据格式 一.开发REST接口 在本专栏之前的章节中已经给大家介绍了 Spring常用注解及http数据转换教程 Spring Boot提高开发效率必备工具lombok使用 Spring Boot开发RESTful接口与http协议状态表述 本节内容就是将之前学到的内容以代码的方式体现出来. 1. 第一步:定义资源(对象) @Data @Builder publ

  • SpringBoot详细列举常用注解的说明

    目录 1 概述 2 常用注解 1 概述 IOC 是Spring 最为重要的功能之一,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. 简言之,注解本身没有什么业务功能的,和 xml 一样,是一种元数据,元数据即解释数据的数据,这就是所谓配置. 2 常用注解 @Component 表示一个带注释的类是一个“组件”,成为Spring管理的Bean.当使用基于注解的配置和类路径扫描时,这些类被视为自动检测的候选对象.同时@Co

  • Maven 常用插件的详细整理

    Maven 常用插件的详细整理 1.源码分析 <artifactId>maven-pmd-plugin</artifactId> 2.代码格式检查 <artifactId>maven-checkstyle-plugin</artifactId> 3.代码相似度检查 <groupId>org.codehaus.mojo</groupId> <artifactId>simian-maven-plugin</artifac

  • SpringBoot 中常用注解及各种注解作用

    本篇文章将介绍几种SpringBoot 中常用注解 其中,各注解的作用为: @PathVaribale 获取url中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写 @RestController是@ResponseBody和@Controller的组合注解. @PathVaribale 获取url中的数据 看一个例子,如果我们需要获取Url=localhost:

  • 全面汇总SpringBoot和SpringClould常用注解

    目录 什么是注解? 一.SpringBoot注解 1.1.@SpringBootApplication 1.2.@Repository 1.3.@Service 1.4.@RestController 1.5.@ResponseBody 1.6.@Component 1.7.@ComponentScan 1.8.@Configuration 1.9.@Bean 1.10.@EnableAutoConfiguration 1.11.@AutoWired 1.12.@Qualifier 1.13.@

随机推荐