注解
1 @deprecated
表示此方法不再继续维护,可以继续使用,但不建议
2 @Configuration
配置文件的注解,代表从配置文件拿配置
3 @value
从配置文件拿去具体配置
4 @Controller, @Service, @Repository,@Componen
都是实现bean 的注入
- 允许通过类路径扫描自动检测实现类
- 它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法
只是作用的范围不一样
@controller 作用controller控制层层
@service 作用service业务层
@repository 作用于 数据层
@componen 业务模糊就用这个
5 @PostConstruct @PreDestroy
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的init()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。
被@PreDestroy修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreDestroy修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。
类似 引用的初始化操作
6 @Primary
自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者
7 @Lazy(true)
懒加载
多用在依赖的互相引用,造成依赖循环的时候,就要用到这个注解
8 @Autowired @Resource @Inject 注入bean
Autowired默认先按byType,如果发现找到多个bean,则,又按照byName方式比对,如果还有多个,则报出异常。
@Resource 默认按 byName自动注入,如果找不到再按byType找bean,如果还是找不到则抛异常,无论按byName还是byType如果找到多个,则抛异常。这是java 的,不是spring
@Inject 等价于默认的@Autowired,只是没有required属性
9 @Async @EnableAsync 异步执行
@EnableAsync 作用在类上
异步调用就是不用等待结果的返回就执行后面的逻辑;
同步调用则需要等待结果再执行后面的逻辑。
一般多用在线程池中
10 @Singleton
单例注解
@Validated:可以用在类型、方法和方法参数上。但是不能用在成员属性(字段)上 额外提供了一个分组功能
@Valid:可以用在方法、构造函数、方法参数和成员属性(字段)上
@Valid 验证注解是否符合要求 一般入参配合@RequestBody,实体在加上注解
限制 说明
限制 |
说明 |
@Null |
限制只能为null |
@NotNull |
限制必须不为null |
@AssertFalse |
限制必须为false |
@AssertTrue |
限制必须为true |
@DecimalMax(value) |
限制必须为一个不大于指定值的数字 |
@DecimalMin(value) |
限制必须为一个不小于指定值的数字 |
@Digits(integer,fraction) |
限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction |
@Future |
限制必须是一个将来的日期 |
@Max(value) |
限制必须为一个不大于指定值的数字 |
@Min(value) |
限制必须为一个不小于指定值的数字 |
@Past |
限制必须是一个过去的日期 |
@Pattern(value) |
限制必须符合指定的正则表达式 |
@Size(max,min) |
限制字符长度必须在min到max之间 |
@ScriptAssert(lang=,script=, alias=) |
|
@Past |
验证注解的元素值(日期类型)比当前时间早 |
@URL(protocol=,host=,port=,regexp=, flags=) |
|
@CreditCardNumber |
信用卡验证 |
@NotEmpty |
验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) |
@NotBlank |
验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 |
|
验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 |
@Range(min=, max=) |
检查数字是否介于min和max之间. |
12 @RequestBody @Responsebody @ResponseStatus
@RequestBody入参为json 格式,且请求为post请求
@Responsebody 出参为json格式
@ResponseStatus 一种是加载自定义异常类上,一种是加在目标方法中 当修饰一个类的时候,通常修饰的是一个异常类,一个自定义异常类,在自定义异常类上面加上@ResponseStatus注释表示系统运行期间,当抛出自定义异常的时候,使用@ResponseStatus注解中声明的属性和reason属性将异常信息返回给客户端,提高可读性。
13 @RestController
@RestController = @Controller + @ResponseBody。
全局定义
14 @RequestParam @Param
解决参数不一致的问题,放在参数前面
@RequestParam 一般用在Controller
@Param 用在Dao层 多个入参,不指定有时候会报映射找不到
15 PathVariable
url路径值与入参映射,将url的参数传递到入参上面
16 @RequestHeader @CookieValue
处理request header部分的注解
17 @GetMapping @PostMapping @RequestMapping
@RequestMapping 包含了get 与 post 参数不填写,一般用在controller
默认参数
1、 value, method:
value:指定请求的实际地址,指定的地址可以是URI Template 模式;
method:指定请求的method类型, GET、POST、PUT、DELETE等;
18 @Retention @Target @Document @Inherited
19 @Inject @Autowired
自动注入bean,等价于默认的@Autowired,只是没有required属性
20
如果domain中没有重写toString, 且使用了@Data注解, 调用toString时只会打印子类本身的属性值, 如果想要打印父类的属性:
方式一: 重写tostring
方式二: 子类加上@Data和@ToString(callSuper = true)两个注解, 父类也使用注解@Data
21 @postconstruct
由Java提供的,它用来修饰一个非静态的void方法。它会在服务器加载Servlet的时候运行,并且只运行一次。
可以理解为初始化。
切面(AOP)相关注解
Spring AOP详细介绍
Spring支持AspectJ的注解式切面编程。
@Aspect 声明一个切面
@After 在方法执行之后执行(方法上)
@Before 在方法执行之前执行(方法上)
@Around 在方法执行之前与之后执行(方法上)
@PointCut 声明切点
@Transactional 事务注解