注解备忘录
@Autowired
自动装配,byType类型
@Controller
控制层
@RestController
相当于@ResponseBody+@Controller
@RequestMapping
地址映射
consumes 用来限制ContentType,告诉服务器当前发送的数据是什么格式
produces 用来限制Accept,告诉服务器,客户端能认识哪些格式,最好返回这些格式中的其中一种
@ResponseBody
返回值不解析成跳转路径
@RequestBody
将前端数据封装成JavaBean
@RequestParam
传递参数
@PathVariable
获取url中的参数
@Value("${属性名}")
读取配置文件
@Primary
当接口有多个实现时,优先使用标注该注解的实现
@Qualifier
当接口有过个实现时,用于标注区分具体使用哪个实现
@profile
标明当前运行环境
@Import
把类注入到IOC容器中
@Transactional
声明事务
注意:
1、不要再接口上声明事务,尽量不要在类上,而是在方法上声明事务
2、只有public方法的此注解才生效
3、对同一个类里的方法内部调用,此注解无效,内部方法使用this.方式调用,没有通过spring获取调用,无法AOP
解决方法:通过ApplicationContext获取bean的方式进行调用,或者通过@Autowired注入自身的代理对象,然后去调用
例:a方法有事务,b方法没事务,a调b,出错都会回滚,b调a,都不会回滚,但使用上面的方法,则b会回滚;
a、c都有事物,a调c,c事物不起作用,但a的事物会起作用,即使c出错,也会回滚。
@Cacheable(value={“缓存名”}, key=“缓存key”, condition=“缓存条件”)
将方法按照键值对缓存起来,下次访问该方法直接返回value,默认key是方法所有的参数,value是返回值
@CachePut
与@Cacheable类似,但每次调用都会执行方法然后将结果存入缓存
@CacheEvict
清除缓存
参数与@Cacheable类似
allEntries=true 清除缓存中的所有元素
beforeInvocation=true 调用该方法之前清除缓存
@Caching
可以在一个方法或者类上同时指定多个Spring Cache相关的注解
Spring Boot
@SpringBootApplication
注解包含了@SpringBootConfiguration、@EnableAutoConfiguration 和@ComponentScan,开启了包扫描、配置和自动配置的功能
@ConditionalOnClass
该注解的参数对应的类若不存在,则不解析该注解修饰的配置类;
@ConditionalOnProperty
控制Configuration是否生效(当有配置信息时生效)
prefix:属性名的前缀
name:属性名称
value:获取对应属性名的值
havingValue:比较属性值与给定值是否相同,相同才加载配置
matchIfMissing:缺少该属性时是否可以加载
@ConfigurationProperties
批量读取注解
配置文件:
myconfig.first.time=123
myconfig.first.list=456
myconfig.first.today=789
JAVA类:
@Data
@ConfigurationProperties("myconfig.first")
public class TestProperties {
private String time ;
private String list ;
private String today ;
}
使用方法同正常类,get,set。
Spring Boot 测试
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment . RANDOM_PORT)
Spring Cloud
@EnableFeignClients
用@feignclient注释的类列表。如果不为空,则禁用类路径扫描。
@FeignClient
name/value:指定FeignClient的名称
configuration: Feign的配置类
fallback: 容错
url:调试用
lombok
@SneakyThrows
姑且看作 throws Exception
@Builder
赋值
UserInfo userInfo = UserInfo.builder()
.name("lc")
.age(18)
.build();