@PostConstruct
从Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。写法有如下两种方式:
@PostConstruct
public void someMethod(){}
// 或者
public @PostConstruct void someMethod(){}
被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init() 方法之前执行。PreDestroy() 方法在destroy() 方法执行之后执行。
@Primary注解
当一个接口有2个不同实现时,使用@Autowired注解时会报org.springframework.beans.factory.NoUniqueBeanDefinitionException异常信息
解决方案1:使用Qualifier注解,选择一个对象的名称,通常比较常用
解决方案2:Primary可以理解为默认优先选择
@CrossOrigin
表示该控制器可以跨域访问
@RequiredArgsConstructor
注解在控制器上,然后多个service属性声明为final,这些值就会被spring自动注入,就不用写 @Autowired了。。。
@RequestBody
备注在controller方法参数前,表示将请求体中的数据映射到某个对象上
@ResponseBody
备注在controller的类上,方法上,表示将返回的结果写入响应体中,不返回页面,直接返回数据
@RequestParam
备注到controller类方法形参前,但是只能映射基本类型数据,不能映射对象,默认被该注解标注的参数为必填参数
完整写法: @RequestParam(value="参数名",required="是否必填",defaultValue="如果没填写,默认值是?")
@ConfigurationProperties(prefix = "spring")
注解到类上,类中的属性对应 properties 或 yaml 文件中 spring 前缀后面的的字段
容器启动时,配置文件中的值会自动映射到属性中来。
和@Value原理一样,但这个是一次性全赋值的操作,简单省事
如果属性和配置文件中的字段不一致,那么容器启动时会报错,无法正常启动
@RefreshScope
在类上加该注解表示该类中的属性值是可以随着配置中心的配置文件更改而实时刷新的,
大致流程 -> 配置中心修改配置文件 -> 发送刷新请求 -> 类中属性值重新读取配置文件的值 -> 实现动态刷新属性值
也就不需要重启服务就可以更改配置啦!
@Order(int)
注解在类上表示Bena加载顺序 ,数字越小加载越早