-
【Java】Spring Boot常用注解
@SpringBootApplication
- @EnableAutoConfiguration:启用 SpringBoot 的自动配置机制
- @ComponentScan: 扫描被@Component (@Repository,@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。
- @Configuration:允许在 Spring 上下文中注册额外的 bean 或导入其他配置类
Spring Bean
- @Autowired自动导入对象到类中,被注入进的类同样要被 Spring 容器管理比如:Service 类注入到 Controller 类中
- @Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
- @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
- @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。
- @Controller : 对应 Spring MVC 控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。
- @RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直接填入 HTTP 响应体中,是 REST 风格的控制器。
- @Scope声明 Spring Bean 的作用域
- singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
- prototype : 每次请求都会创建一个新的 bean 实例。
- request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
- session : 每一个 HTTP Session 会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。
- @Configuration一般用来声明配置类,可以使用 @Component注解替代,不过使用@Configuration注解声明配置类更加语义化。
HTTP请求
- GET :请求从服务器获取特定资源。举个例子:GET /users(获取所有学生)
- @GetMapping(“users”) 等价于@RequestMapping(value=“/users”,method=RequestMethod.GET)
- POST :在服务器上创建一个新的资源。举个例子:POST /users(创建学生)
- @PostMapping(“users”) 等价于@RequestMapping(value=“/users”,method=RequestMethod.POST)
- PUT :更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12(更新编号为 12 的学生)
- @PutMapping(“/users/{userId}”) 等价于@RequestMapping(value=“/users/{userId}”,method=RequestMethod.PUT)
- DELETE :从服务器删除特定的资源。举个例子:DELETE /users/12(删除编号为 12 的学生)
- @DeleteMapping(“/users/{userId}”)等价于@RequestMapping(value=“/users/{userId}”,method=RequestMethod.DELETE)
- PATCH :更新服务器上的资源(客户端提供更改的属性,可以看做作是部分更新),使用的比较少,这里就不举例子了。
- @PatchMapping(“/profile”)
前后端传值
- @PathVariable用于获取路径参数
- @RequestParam用于获取查询参数
- @RequestBody用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且Content-Type 为 application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。系统会使用HttpMessageConverter或者自定义的HttpMessageConverter将请求的 body 中的 json 字符串转换为 java 对象。
读取配置文件
- 使用@Value(“${property}”)读取比较简单的配置信息
- 通过@ConfigurationProperties读取并与 bean 绑定
- 通过@ConfigurationProperties读取并校验
- @PropertySource读取指定 properties 文件
参数校验
- JSR提供的校验注解:
- @Null 被注释的元素必须为 null
- @NotNull 被注释的元素必须不为 null
- @AssertTrue 被注释的元素必须为 true
- @AssertFalse 被注释的元素必须为 false
- @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
- @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
- @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
- @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
- @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
- @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
- @Past 被注释的元素必须是一个过去的日期
- @Future 被注释的元素必须是一个将来的日期
- @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
- @Valid注解,如果验证失败,它将抛出MethodArgumentNotValidException
- 类上加上 @Validated 注解,这个参数可以告诉 Spring 去校验方法参数
- Hibernate Validator提供的校验注解:
- @NotBlank(message =) 验证字符串非null,且长度必须大于0
- @Email 被注释的元素必须是电子邮箱地址
- @Length(min=,max=) 被注释的字符串的大小必须在指定的范围
- @NotEmpty 被注释的字符串的必须非空
- @Range(min=,max=,message=) 被注释的元素必须在合适的范围内
处理异常
- 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常
- @ControllerAdvice :注解定义全局异常处理类
- @ExceptionHandler :注解声明异常处理方法
- @ExceptionHandler 处理 Controller 级别的异常
- 通过 ResponseStatus注解简单处理异常的方法(将异常映射为状态码)
JPA
- @Entity声明一个类对应一个数据库实体。
- @Table 设置表名
- @Id :声明一个字段为主键。
- 使用@Id声明之后,我们还需要定义主键的生成策略。我们可以使用 @GeneratedValue 指定主键生成策略。
- 通过 @GenericGenerator声明一个主键策略,然后 @GeneratedValue使用这个策略
- @Column 声明字段
- @Transient :声明不需要与数据库映射的字段,在保存的时候不需要保存进数据库
- @Lob:声明某个字段为大字段
- 可以使用枚举类型的字段,不过枚举字段要用@Enumerated注解修饰
- @CreatedDate: 表示该字段为创建时间字段,在这个实体被 insert 的时候,会设置值
- @CreatedBy :表示该字段为创建人,在这个实体被 insert 的时候,会设置值
- @LastModifiedDate、@LastModifiedBy同理。
- @EnableJpaAuditing:开启 JPA 审计功能。
- @Modifying 注解提示 JPA 该操作是修改操作,注意还要配合@Transactional注解使用
- @OneToOne 声明一对一关系
- @OneToMany 声明一对多关系
- @ManyToOne 声明多对一关系
- @ManyToMany 声明多对多关系
事务
- 在要开启事务的方法上使用@Transactional注解即可
- 我们知道 Exception 分为运行时异常 RuntimeException 和非运行时异常。在@Transactional注解中如果不配置rollbackFor属性,那么事务只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事务在遇到非运行时异常时也回滚。
- @Transactional 注解一般可以作用在类或者方法上。
- 作用于类:当把@Transactional 注解放在类上时,表示所有该类的 public 方法都配置相同的事务属性信息。
- 作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。
json数据处理
- @JsonIgnoreProperties 作用在类上用于过滤掉特定字段不返回或者不解析。
- @JsonIgnore一般用于类的属性上,作用和上面的@JsonIgnoreProperties 一样
- @JsonFormat一般用来格式化 json 数据。
- @JsonUnwrapped:扁平化对象
测试相关
- @ActiveProfiles一般作用于测试类上, 用于声明生效的 Spring 配置文件。
- @Test声明一个方法为测试方法
- @Transactional被声明的测试方法的数据会回滚,避免污染测试数据。
- @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