Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不一样的缓存技术;并支持使用JCache(JSR-107)注解简化开发。web
Cache接口为缓存的组件规范定义,包含缓存的各类操做集合。spring
Cache接口下Spring提供了各类Cache的实现,如RedisCache、EhCacheCache、ConcurrentMapCache等。缓存
每次调用须要缓存功能的方法时,Spring会检查指定参数的指定的目标方法是否已经被调用过;若是有就直接从缓存中获取方法调用后的结果,若是没有就调用方法并缓存结果后返回给用户,下次直接从缓存中获取。安全
注解 | 说明 |
---|---|
Cache | 缓存接口,定义缓存操做。实现有:RedisCache、EhCacheCache、ConcurrentMapCache等。 |
CacheManager | 缓存管理器,管理各类缓存组件 |
@Cacheable | 主要针对方法配置,可以根据方法的请求参数对其结果进行缓存 |
@CacheEvict | 清空缓存 |
@CachePut | 保证方法被调用的时候讲结果缓存 |
@EnableCaching | 开启基于注解的缓存 |
keyGenerator | 缓存数据时key生成策略 |
Serialize | 缓存数据时value序列化策略 |
参数 | 说明 | 例子 |
---|---|---|
value | 缓存的名称,在Spring配置文件中定义,必须指定至少一个 | @Cacheable(value="mycache")或者@Cacheable(value={"cache1","cache2"}) |
key | 缓存的key,能够为空,若是指定要按照SpEL表达式编写,若是不指定,则缺省按照方法的全部参数进行组合 | @Cache(value="testCache",key="#userName") |
condition | 缓存的条件,能够为空,使用SpEL编写,返回true或者false,只有为true才进行缓存/清除缓存 | @Cacheable(value="testCache",condition="#userName") |
allEntries(@(CacheEvict)) | 是否清空全部缓存内容,缺省为false,若是指定为true,则方法调用后将当即清空全部缓存 | @CacheEvict(value="testCache",allEntries=true) |
beforeInvocation(@CacheEvict) | 是否在方法执行前就清空,缺省为false,若是指定为true,则方法在尚未执行的时候就会清空缓存,缺省状况下,若是方法执行抛出异常,则不会清空缓存 | @CacheEvict(value="testCache",beforeInvocation=true) |
SpringBoot经过整合Spring Data ElasticSearch提供了很是便捷的检索功能支持。springboot
在Java应用中,绝大多数状况下都是经过同步的方式来实现交互处理的;可是在处理与第三方系统交互的时候,容易形成响应迟缓的状况,以前大部分都是使用多线程来完成此类任务,其实,在Spring 3.x以后,就已经内置了@Async来解决这个问题。
@EnableAsync注解开启异步支持。
@Async标识这是一个异步执行的方法。多线程
Spring提供了异步任务调度的方式,提供了TaskExecutor、TaskScheduler接口。
@EnableScheduling 启用定时任务支持。
@Schedlued 标识定时任务。
任务的调用时间使用cron表达式进行指定。app
Cron表达式说明框架
字段 | 容许值 | 容许的特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
小时 | 0-23 | , - * / |
日期 | 1-31 | , - * ? / L W C |
月份 | 1-12或者JAN-DEC | , - * / |
星期 | 1-7或者SUN-SAT | , - * ? / L C # |
年(可选) | 空,1970-2099 | , - * / |
特殊字符含义说明异步
特殊字符 | 含义 |
---|---|
, | 枚举 |
- | 区间 |
* | 任意 |
/ | 步长 |
? | 日/星期冲突匹配 |
L | 最后 |
W | 工做日 |
C | 和calender联系后计算过的值 |
# | 星期,4#2 表示第二个星期三 |
Spring Security是针对Spring项目的安全框架,也是SpringBoot底层安全模块默认的技术选型。它能够实现强大的web安全控制。对于安全控制,只须要引入spring-boot-starter-security模块,进行少许的配置便可。
@EnableWebSecurity 开启WebSecurity模式
WebSecurityConfigurerAdapter 自定义Security策略。
AuthenticationManagerBuilder 自定义认证策略。elasticsearch
经过引入spring-boot-starter-actuator,可使用SpringBoot为咱们提供的标准生产环境下的应用监控和管理功能,能够经过HTTP、JMX、SSH协议来进行操做,自动获得审计、健康指标信息等。
监控和管理端点
端点名|描述
:-|:-
actuator|全部Endpoint端点,需加入spring HATEOAS支持
autoconfig|全部自动配置的信息
beans|全部Bean的信息
configprops|全部配置属性
dump|线程状态信息
env|当前环境信息
health|应用健康情况
info|当前应用信息
metrics|应用的各项指标
mappings|应用@RequestMapping映射路径
shutdown|关闭当前应用(默认关闭)
trace|追踪信息(最新的http请求)