目录
1、springboot缓存
注解式缓存:将方法的运行结果进行缓存;以后再要相同的数据,直接从缓存中获取,不用调用方法; * CacheManager管理多个Cache组件的,对缓存的真正CRUD操作在Cache组件中,每一个缓存组件有自己唯一一个名字;
原理:
1、自动配置类;CacheAutoConfiguration *
2、缓存的配置类
org.springframework.boot.autoconfigure.cache.GenericCacheConfiguration org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration org.springframework.boot.autoconfigure.cache.InfinispanCacheConfiguration org.springframework.boot.autoconfigure.cache.RedisCacheConfiguration
......
org.springframework.boot.autoconfigure.cache.SimpleCacheConfiguration【默认】
3、哪个配置类默认生效:SimpleCacheConfiguration;
4、给容器中注册了一个CacheManager:ConcurrentMapCacheManager
5、可以获取和创建ConcurrentMapCache类型的缓存组件;他的作用将数据保存在ConcurrentMap中;
核心:
1)、使用CacheManager【ConcurrentMapCacheManager】按照名字得到Cache【ConcurrentMapCache】组件
2)、key使用keyGenerator生成的,默认是SimpleKeyGenerator
常用缓存注解:
二、快速体验缓存
步骤:
1、开启基于注解的缓存 @EnableCaching
2、标注缓存注解即可
@Cacheable
@CacheEvict
@CachePut
默认使用的是ConcurrentMapCacheManager==ConcurrentMapCache;将数据保存在 ConcurrentMap<Object, Object>中
开发中使用缓存中间件;redis、memcached、ehcache;
三、整合redis作为缓存
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
1、安装redis
2、引入redis的starter
3、application.yml配置redis链接地址
4、测试缓存
原理:CacheManager===Cache 缓存组件来实际给缓存中存取数据
1)、引入redis的starter,容器中保存的是 RedisCacheManager;
2)、RedisCacheManager 帮我们创建 RedisCache 来作为缓存组件;RedisCache通过操作redis缓存数据的
3)、默认保存数据 k-v 都是Object;利用序列化保存;如何保存为json
1、引入了redis的starter,cacheManager变为 RedisCacheManager;
2、默认创建的 RedisCacheManager 操作redis的时候使用的是 RedisTemplate<Object, Object>
3、RedisTemplate<Object, Object> 是 默认使用jdk的序列化机制
4)、自定义CacheManager;
2、springboot消息队列
3、springboot与检索
3、springboot与安全
使用步骤:
1、引入SpringSecurity;
2、编写SpringSecurity的配置类;@EnableWebSecurity extends WebSecurityConfigurerAdapter
3、控制请求的访问权限:
configure(HttpSecurity http) {
http.authorizeRequests().antMatchers("/").permitAll()
.antMatchers("/level1/**").hasRole("XXX")
}
4、定义认证规则:
configure(AuthenticationManagerBuilder auth){
auth.inMemoryAuthentication()
.withUser("zhangsan").password("123456").roles("VIP1","VIP2")
}
5、开启自动配置的登陆功能:
configure(HttpSecurity http){
http.formLogin();
}
6、注销:http.logout();
7、记住我:Remeberme();
4、springboot与分布式
将服务提供者注册到注册中心
生产者:
1、引入dubbo和zkclient相关依赖
2、配置dubbo的扫描包和注册中心地址
3、使用dubbo的@Service发布服务
消费者:
1、引入依赖,
2、配置dubbo的注册中心地址
3、引用服务dubbo的@Reference注解注入接口,必须有和生产者相同的接口
消费者入口类要配置发现服务:
@EnableDiscoveryClient //开启发现服务功能、@LoadBalanced //使用负载均衡机制
使用@Autowired
RestTemplate restTemplate;进行远程通信,因为springcloud是基于http实现,
远程调用:String s = restTemplate.getForObject("http://PROVIDER-TICKET/ticket", String.class);
5、springboot与服务监控
监控的各项端点有:端点也可进行定制,通过endpoints+端点名+属性名来设置