springboot注解@PostContruct以及@Cacheable
1.@PostContruct
@PostConstruct和@PreDestroy两个注解被用来修饰一个非静态的void()方法。
@PostConstruct
加该注解会在项目启动的时候执行该方法,也可以理解为在spring容器初始化的时候执行该方法。
执行顺序为:
Constructor 构造方法>> @Autowired 依赖注入>> @PostConstruct后期构造 >> 静态方法
@PreDestroy
服务器卸载Servlet的时候运行,且只会被服务器调用一次,类似Servlet的destroy()方法。
被@PreConstruct修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。
2.@Cacheable 注意: 使用spring缓存注解之前需要开启注解
@Cacheable
value/cacheNames属性意义相同 将方法的返回结果存入哪里
key属性:来指定缓存数据所使用的key 默认使用方法调用传过来的参数作为 key
keyGenerator属性:通过自定义配置类方式,将 keyGenerator 注册到 IOC 容器来使用
key/keyGenerator属性二选一使用
cacheManager属性:用来指定缓存管理器
cacheResolver属性:用来指定缓存管理器 使用配置同 cacheManager 类似
cacheManager指定管理器/cacheResolver指定解析器 它俩也是二选一使用
condition属性:
条件判断属性,用来指定符合指定的条件下才可以缓存,
可以通过SpEL 表达式设置 condition = "#id >1 and #controller.methodName eq 'findAllDept'"
unless属性:意为"除非"的意思。即只有 unless 指定的条件为 true 时,
方法的返回值才不会被缓存。可以在获取到结果后进行判断。
sync属性:该属性用来指定是否使用异步模式,该属性默认值为 false,默认为同步模式。
异步模式指定 sync = true 即可,异步模式下 unless 属性不可用。
@CacheEvict 清空指定缓存
前面几个属性和@Cacheable属性相同
allEntries属性: 将这个缓存中的数据都删除
beforeInvocation属性:缓存的清除是否在方法之前执行,默认代表在方法执行之后执行 true是先操作缓存,再执行方法。