Spring及SpringBoot常用注解学习

1. @SpringBootApplication

spring boot项目的启动注解,平时我们在创建spring boot项目后,会自动默认加在主类上
在这里插入图片描述
@SpringBootApplication 的功能可由 @Configuration、@EnableAutoConfiguration、@ComponentScan 三个注解替代。

  • @Configuration :允许在 Spring 上下文中注册额外的 bean 或导入其他配置类
  • @EnableAutoConfiguration :允许启用 SpringBoot 的自动配置机制
  • @ComponentScan :扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。
2. Bean 相关注解
2.1 @Autowired

@Autowired 可以将被Spring 容器管理的类的对象自动导入到类中,需要被自动导入 bean的类,需要加上 @Component,@Repository,@Service, @Controller 注解
在这里插入图片描述
在这里插入图片描述

2.2 @Component @Repository @Service @Controller

要使用 @Autowired 给类自动装配bean,需要对类加上 @Component,@Repository,@Service, @Controller中的一个注解进行标记,当项目启动前进行扫包时,即可将对应的类放入spring 容器中。

  • @Controller : 对应 Spring MVC 控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。
  • @Service : 对应服务层,主要涉及一些复杂的业务逻辑实现,需要用到 Dao 层。
  • @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
  • @Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
2.3 @RestController

@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直接填入 HTTP 响应体中,是 REST 风格的控制器。

  • 单独使用 @Controller 不加 @ResponseBody的话一般使用在要返回一个视图的情况,这种情况属于比较传统的 Spring MVC 的应用,对应于前后端不分离的情况。
  • @Controller +@ResponseBody 返回 JSON 或 XML 形式数据
2.4 @Configuration

@Configuration 一般用来声明配置类,可由 @Component 注解替代,不过使用@Configuration注解声明配置类更加语义化,方便阅读。

3. 常见的 HTTP 请求类型 注解

该类注解加在方法上

3.1 GET :请求从服务器获取特定资源。

@GetMapping(“test”) 等价于@RequestMapping(value="/test",method=RequestMethod.GET)
在这里插入图片描述
@PostMapping(“test”) 等价于@RequestMapping(value="/test",method=RequestMethod.POST)
在这里插入图片描述

4. 参数传递
4.1 @PathVariable 和 @RequestParam

@PathVariable用于获取路径参数,@RequestParam用于获取查询参数。

// 当我们请求的 url 是:/api/{123456}/test?type=web
// 那么我们服务获取到的数据就是:testId=123456,type=web。
@GetMapping("/api/{testId}/test")
public List<Test> test(
         @PathVariable("testId") Long klassId,
         @RequestParam(value = "type", required = false) String type ) {
...
}
4.2 @RequestBody

用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。
ps: 一个请求方法只可以有一个@RequestBody,但是可以有多个@RequestParam和@PathVariable。

5. 配置信息读取

一般,我们会把配置信息保存在 application.yml或者application.properties中,这时,可通过配置注解进行加载。

5.1

使用 @Value("${配置属性名}") 读取比较简单;
在这里插入图片描述

5.2 @ConfigurationProperties

通过@ConfigurationProperties读取配置信息并与 bean 绑定,可以像使用普通的 Spring bean 一样,将其注入到类中使用。

6. 参数校验

可对前端对传入后端的数据进行校验,避免用户绕过浏览器直接通过一些 HTTP 工具直接向后端请求一些违法数据。

  • @NotEmpty 被注释的字符串的不能为 null 也不能为空
  • @NotBlank 被注释的字符串非 null,并且必须包含一个非空白字符
  • @Null 被注释的元素必须为 null
  • @NotNull 被注释的元素必须不为 null
  • @AssertTrue 被注释的元素必须为 true
  • @AssertFalse 被注释的元素必须为 false
  • @Pattern(regex=,flag=)被注释的元素必须符合指定的正则表达式
  • @Email 被注释的元素必须是 Email 格式。
  • @Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
  • @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
  • @Size(max=, min=)被注释的元素的大小必须在指定的范围内
  • @Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
  • @Past被注释的元素必须是一个过去的日期
  • @Future 被注释的元素必须是一个将来的日期
7. 测试相关
  1. @Test声明一个方法为测试方法
  2. @Transactional被声明的测试方法的数据会回滚,避免污染测试数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值