• 【Java】Spring Boot常用注解


    @SpringBootApplication

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

    Spring Bean

    1. @Autowired自动导入对象到类中,被注入进的类同样要被 Spring 容器管理比如:Service 类注入到 Controller 类中
    2. @Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
    3. @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
    4. @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
    5. @Controller : 对应 Spring MVC 控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。
    6. @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直接填入 HTTP 响应体中,是 REST 风格的控制器。
    7. @Scope声明 Spring Bean 的作用域
      • singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
      • prototype : 每次请求都会创建一个新的 bean 实例。
      • request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
      • session : 每一个 HTTP Session 会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。
    8. @Configuration一般用来声明配置类,可以使用 @Component注解替代,不过使用@Configuration注解声明配置类更加语义化。

    HTTP请求

    1. GET :请求从服务器获取特定资源。举个例子:GET /users(获取所有学生)
      • @GetMapping(“users”) 等价于@RequestMapping(value=“/users”,method=RequestMethod.GET)
    2. POST :在服务器上创建一个新的资源。举个例子:POST /users(创建学生)
      • @PostMapping(“users”) 等价于@RequestMapping(value=“/users”,method=RequestMethod.POST)
    3. PUT :更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12(更新编号为 12 的学生)
      • @PutMapping(“/users/{userId}”) 等价于@RequestMapping(value=“/users/{userId}”,method=RequestMethod.PUT)
    4. DELETE :从服务器删除特定的资源。举个例子:DELETE /users/12(删除编号为 12 的学生)
      • @DeleteMapping(“/users/{userId}”)等价于@RequestMapping(value=“/users/{userId}”,method=RequestMethod.DELETE)
    5. PATCH :更新服务器上的资源(客户端提供更改的属性,可以看做作是部分更新),使用的比较少,这里就不举例子了。
      • @PatchMapping(“/profile”)

    前后端传值

    1. @PathVariable用于获取路径参数
    2. @RequestParam用于获取查询参数
    3. @RequestBody用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。

    读取配置文件

    1. 使用@Value(“${property}”)读取比较简单的配置信息
    2. 通过@ConfigurationProperties读取并与 bean 绑定
    3. 通过@ConfigurationProperties读取并校验
    4. @PropertySource读取指定 properties 文件

    参数校验

    1. JSR提供的校验注解:
      1. @Null 被注释的元素必须为 null
      2. @NotNull 被注释的元素必须不为 null
      3. @AssertTrue 被注释的元素必须为 true
      4. @AssertFalse 被注释的元素必须为 false
      5. @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
      6. @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
      7. @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
      8. @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
      9. @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
      10. @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
      11. @Past 被注释的元素必须是一个过去的日期
      12. @Future 被注释的元素必须是一个将来的日期
      13. @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
      14. @Valid注解,如果验证失败,它将抛出MethodArgumentNotValidException
      15. 类上加上 @Validated 注解,这个参数可以告诉 Spring 去校验方法参数
    2. Hibernate Validator提供的校验注解:
      1. @NotBlank(message =) 验证字符串非null,且长度必须大于0
      2. @Email 被注释的元素必须是电子邮箱地址
      3. @Length(min=,max=) 被注释的字符串的大小必须在指定的范围
      4. @NotEmpty 被注释的字符串的必须非空
      5. @Range(min=,max=,message=) 被注释的元素必须在合适的范围内

    处理异常

    1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常
    2. @ControllerAdvice :注解定义全局异常处理类
    3. @ExceptionHandler :注解声明异常处理方法
    4. @ExceptionHandler 处理 Controller 级别的异常
    5. 通过 ResponseStatus注解简单处理异常的方法(将异常映射为状态码)

    JPA

    1. @Entity声明一个类对应一个数据库实体。
    2. @Table 设置表名
    3. @Id :声明一个字段为主键。
    4. 使用@Id声明之后,我们还需要定义主键的生成策略。我们可以使用 @GeneratedValue 指定主键生成策略。
    5. 通过 @GenericGenerator声明一个主键策略,然后 @GeneratedValue使用这个策略
    6. @Column 声明字段
    7. @Transient :声明不需要与数据库映射的字段,在保存的时候不需要保存进数据库
    8. @Lob:声明某个字段为大字段
    9. 可以使用枚举类型的字段,不过枚举字段要用@Enumerated注解修饰
    10. @CreatedDate: 表示该字段为创建时间字段,在这个实体被 insert 的时候,会设置值
    11. @CreatedBy :表示该字段为创建人,在这个实体被 insert 的时候,会设置值
    12. @LastModifiedDate、@LastModifiedBy同理。
    13. @EnableJpaAuditing:开启 JPA 审计功能。
    14. @Modifying 注解提示 JPA 该操作是修改操作,注意还要配合@Transactional注解使用
    15. @OneToOne 声明一对一关系
    16. @OneToMany 声明一对多关系
    17. @ManyToOne 声明多对一关系
    18. @ManyToMany 声明多对多关系

    事务

    1. 在要开启事务的方法上使用@Transactional注解即可
    2. 我们知道 Exception 分为运行时异常 RuntimeException 和非运行时异常。在@Transactional注解中如果不配置rollbackFor属性,那么事务只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事务在遇到非运行时异常时也回滚。
    3. @Transactional 注解一般可以作用在类或者方法上。
      • 作用于类:当把@Transactional 注解放在类上时,表示所有该类的 public 方法都配置相同的事务属性信息。
      • 作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。

    json数据处理

    1. @JsonIgnoreProperties 作用在类上用于过滤掉特定字段不返回或者不解析。
    2. @JsonIgnore一般用于类的属性上,作用和上面的@JsonIgnoreProperties 一样
    3. @JsonFormat一般用来格式化 json 数据。
    4. @JsonUnwrapped:扁平化对象

    测试相关

    1. @ActiveProfiles一般作用于测试类上, 用于声明生效的 Spring 配置文件。
    2. @Test声明一个方法为测试方法
    3. @Transactional被声明的测试方法的数据会回滚,避免污染测试数据。
    4. @WithMockUser Spring Security 提供的,用来模拟一个真实用户,并且可以赋予权限。
  • 相关阅读:
    C++:多态的内容和底层原理
    ESP32网络开发实例-自定义主机名称
    这是一个隐藏的(绝世武功)Java 学习路线图,祝你Offer拿到手软
    设计模式——Decorator(装饰器模式)
    [cpp primer随笔] 12. 函数指针
    班级校园网页设计作业 静态HTML我的班级网页 DW班级网站模板下载 大学生简单班级网页作品代码 我的大学网页制作 学生班级网页设计作业
    流程建模艺术:使用Activiti设计流程
    spring面试常遇见的问题(02)
    神经调节的知识网络图,图神经网络与知识图谱
    19. 删除链表的倒数第 N 个结点
  • 原文地址:https://blog.csdn.net/weixin_44485744/article/details/126480274