写点什么

【SpringBoot】SpringBoot 常用注解

作者:No8g攻城狮
  • 2023-02-11
    河南
  • 本文字数:2392 字

    阅读完需:约 8 分钟

一、前言

首先这里说的 SpringBoot 常用注解是指在我们开发项目过程中,我们经常使用的注解,包含 Spring、SpringBoot、SpringCloud、SpringMVC 等这些框架中的注解,而不仅仅是 SpringBoot 中的注解。


这里只是作一个注解列举,每个注解具体如何使用可以自行搜索查询哈。

二、配置启动相关注解

2.1 @SpringBootApplication

等价于 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三个注解之和。

2.2 @Configuration

SpringBoot 提供基于 Java 的配置,相当于之前写的 xml 中配置的 Bean。

2.3 @EnableAutoConfiguration

类级别的注解,开启自动配置,这个注解告诉 SpringBoot 根据添加的 Jar 依赖猜测你想如何配置 Spring。

2.4 @ComponentScan

标注哪些路径下的类需要被 Spring 扫描。

2.5 @Conditional

这个是一个综合的注解,包含了很多子注解。


@ConditionalOnBean:标注配置了某个特定的 Bean


@ConditionalOnMissingBean:标注没有配置特定的 Bean


@ConditionalOnClass:标注 Classpath 里有指定的类


@ConditionalOnMissingClass:标注 Classpath 里没有指定的类


@ConditionalOnExpression:标注给定的 SpELl 表达式计算结果为 true


@ConditionalOnJava:标注 Java 的版本匹配特定值或者一个范围值


@ConditionalOnJndi:标注参数中给定的 JNDI 位置必须存在一个,如果没有给参数,则要有 JNDI InitialContext


@ConditionalOnOnProperty:标注指定的配置属性要有一个明确的值


@ConditionalOnResource:标注 Classpath 里没有指定的资源


@ConditionalOnWebApplication:标注这是一个 Web 应用程序


@ConditionalOnNotWebApplication:标注这不是一个 Web 应用程序

三、Bean 处理相关注解

3.1 依赖注入

@Autowired(属于 Spring 中的注解)


用法:用在属性和方法上。含义:byType 方式完成自动装配,把配置好的 Bean 拿来用,完成属性、方法的组装。当加上(required=false)时就算找不到 bean 也不会报错。


@Resource(属于 J2EE 的注解)


用法:用在属性上。含义:byName 方式完成自动装配,把配置好的 Bean 拿来用,完成属性的组装。有两个重要属性,分别是 name 和 type。

3.2 标注类被 Spring 容器管理

@Component


泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。一般公共方法即可用上这个注解。


@Respository


用于数据持久层,经常标记到 DAO 类上。


@Service


用于服务层,经常标注到 Service 类上,学需要注解 DAO 层。


@Controller


用于控制层,MVC 的控制层 Bean,常注入 Service 层。


@RestController


与 @Controller 注解相似,标注这是一个控制层。标注这个注解的类的控制器中会将所有处理器方法的返回值都要直接写入响应体中,而不是将值放到模型中并传递给一个视图以便于渲染。


替代写法:@RestController 等同于 @Controller+@Response。


@Configuration


一般用来声明配置类。


@Scope


声明 Spring Bean 的作用域:singleton、prototype、request、session。

四、HTTP 请示相关注解

四种常见的 HTTP 请求类型如下:

4.1 @GetMapping

GET 请求,从服务器获取指定的资源。

4.2 @PostMapping

POST 请求,在服务器上创建一个新的资源。

4.3 @PutMapping

PUT 请求,更新服务器上的资源。

4.4 @DeleteMapping

DELETE 请求,从服务器上删除指定的资源。


这里先列出以上四个,其他的可以自行搜索哦。

五、前后端参数传递相关注解

5.1 @RequestParam

用在方法的参数前面,获取请求中表单类型的 key=value 格式的数据。

5.2 @PathVariable

路径变量,参数与大括号里的名字要一样。

5.3 @RequestBody

获取请求 body 中的数据,常用于搭配 @PostMapping 请求来提交的对象数据。

5.4 @ResponseBody

表示该方法的返回结果直接写入到了 HTTP response body 中了,格式为 json。

六、读取配置相关注解

6.1 @Value

直接读取各种配置源的属性值。

6.2 @ConfigurationProperties

读取配置信息并与 bean 绑定。

6.3 @PropertySource

指定加载自定义的配置文件。

七、参数校验相关注解

7.1 Bean 字段验证注解

@NotEmpty


@NotBlank


@Null


@NotNull


@AssertTrue


@AssertFalse


@Pattern(regex=,flag=)


@Email


@Min(value)


@Max(value)


@Size


@DecimalMin


@DecimalMax


@Past


@Future


@Digits

7.2 @Valid

用于标注验证对象的级联属性。

7.3 Validated

Spring 提供的注解,于 SpringMVC 一起使用,标注方法的参数需要检查。

八、统一异常处理相关注解

8.1 @ControllerAdvice

注解定义全局异常处理类,包含 @Component,所以可以被 Spring 扫描到。

8.2 @ExceptionHandler

注解声明异常处理方法,表示遇到这个异常,就执行标注的方法。

九、JPA 数据持久化相关注解

9.1 @Transactional

可以标注在类上,也可以标注在方法上。


标注在类上:表示所有该类的 public 方法都配置相同的事务属性信息。


标注在方法上:表示该方法配置了事务属性信息。当类和方法上同时标注上 @Transactional 注解,方法的事务会覆盖类的事务配置信息。

9.2 @Entity

声明数据库实体类。

9.3 @Table

声明表名。

9.4 @Id

声明该字段为主键。

9.5 @GeneratedValue

声明主键的生成策略。

9.6 @Column

声明字段,经常用于属性名和表字段的映射。

9.7 @Transient

指定不需要持久化的字段。

9.8 @Lob

声明该字段为大字段。

9.9 @Enumerated

声明该字段是枚举类型的字段。

9.10 @Modifying

加在 DAO 方法上,表明是修改操作。

十、JSON 格式化处理相关注解

10.1 @JsonFormat

用来格式化 json 数据。

10.2 @JsonIgnoreProperties

作用在类上用于过滤掉特定字段不返回或者不解析。

10.3 @JsonIgnore

一般用于属性上,作用和上面的 @JsonIgnoreProperties 一样。

10.4 @JsonUnwrapped

声明该字段是扁平化对象。

十一、测试处理相关注解

11.1 @Test

声明一个方法为测试方法。

11.2 @Transactional

声明测试的方法数据会回滚,避免污染数据。

11.3 @ActiveProfiles

常作用于测试类上,用于声明生效的 Spring 配置文件

11.4 @WithMockUser

SpringSecurity 提供的,用来模拟一个真实用户,并且可以赋予权限。


本文首发于 CSDN,为博主原创文章,如果需要转载,请注明出处,谢谢!


完结!

发布于: 刚刚阅读数: 3
用户头像

No8g攻城狮

关注

熟了再告诉你 2022-12-03 加入

热衷分享,喜欢原创~ 关注我会给你带来一些不一样的认知和成长

评论

发布
暂无评论
【SpringBoot】SpringBoot常用注解_Spring Boot 2_No8g攻城狮_InfoQ写作社区