Spring常用注解
2020-06-10 17:27:07 59 举报
AI智能生成
spring工作中常用注解
作者其他创作
大纲/内容
Spring Bean
@Autowired
自动导入对象到类中,被注入进的类同样要被 Spring 容器管理比如:Service 类注入到 Controller 类中。
@Component
通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
@Repository
对应持久层即 Dao 层,主要用于数据库相关操作
@Service
对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层
@Controller
对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。
@RestController
@Scope
作用域
singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
prototype : 每次请求都会创建一个新的 bean 实例
request : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。
session : 每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效
Configuration
一般用来声明配置类
前后端传值
@PathVariable
用于获取路径参数
@RequestParam
用于获取查询参数
@RequestBody
一个请求方法只可以有一个@RequestBody
参数校验
字段验证的注解
@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
被注释的元素必须是一个将来的日期
验证请求体(RequestBody)
验证请求参数(Path Variables 和 Request Parameters)
全局处理 Controller 层异常
@ControllerAdvice :注解定义全局异常处理类
@ExceptionHandler :注解声明异常处理方法
事务 @Transactional
作用于类:当把@Transactional 注解放在类上时,表示所有该类的public 方法都配置相同的事务属性信息。
作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。
@SpringBootApplication
@EnableAutoConfiguration
启用 SpringBoot 的自动配置机制
@ComponentScan
扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。
@Configuration
允许在 Spring 上下文中注册额外的 bean 或导入其他配置类
HTTP 请求类型
GET 请求
@GetMapping("users") 等价于@RequestMapping(value="/users",method=RequestMethod.GET)
POST 请求
@PostMapping("users") 等价于@RequestMapping(value="/users",method=RequestMethod.POST)
PUT 请求
@PutMapping("/users/{userId}") 等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.PUT)
DELETE 请求
@DeleteMapping("/users/{userId}")等价于@RequestMapping(value="/users/{userId}",method=RequestMethod.DELETE)
PATCH 请求
读取配置信息
@Value
使用 @Value("${property}") 读取比较简单的配置信息
@ConfigurationProperties
@ConfigurationProperties读取配置信息并与 bean 绑定
@PropertySource
@PropertySource读取指定 properties 文件
JPA 相关
创建表
@Entity声明一个类对应一个数据库实体。
@Table 设置表名
创建主键
@Id :声明一个字段为主键。
1.通过 @GeneratedValue直接使用 JPA 内置提供的四种主键生成策略来指定主键生成策略
2.通过 @GenericGenerator声明一个主键策略,然后 @GeneratedValue使用这个策略
设置字段类型
@Column 声明字段
指定不持久化特定字段
@Transient :声明不需要与数据库映射的字段,在保存的时候不需要保存进数据库
除了 @Transient关键字声明, 还可以采用下面几种方法
声明大字段
@Lob:声明某个字段为大字段。
更详细的声明
创建枚举类型的字段
可以使用枚举类型的字段,不过枚举字段要用@Enumerated注解修饰
使用
增加审计功能
@CreatedDate: 表示该字段为创建时间时间字段,在这个实体被 insert 的时候,会设置值
@CreatedBy :表示该字段为创建人,在这个实体被 insert 的时候,会设置值
@LastModifiedDate、@LastModifiedBy同理。
@LastModifiedDate、@LastModifiedBy同理。
@EnableJpaAuditing:开启 JPA 审计功能。
删除/修改数据
@Modifying 注解提示 JPA 该操作是修改操作,注意还要配合@Transactional注解使用。
关联关系
@OneToOne 声明一对一关系
@OneToMany 声明一对多关系
@ManyToOne声明多对一关系
@MangToMang声明多对多关系
json 数据处理
过滤 json 数据
@JsonIgnoreProperties 作用在类上用于过滤掉特定字段不返回或者不解析。
@JsonIgnore一般用于类的属性上,作用和上面的@JsonIgnoreProperties 一样。
格式化 json 数据
@JsonFormat一般用来格式化 json 数据。
扁平化对象
之前
代码
结果
扁平对象之后
代码
结果
0 条评论
下一页