ehcache\redis
- 增加缓存后的作用
用来减轻数据库的访问压力。从而提高系统的访问速度
使用cacheManager
- 增加缓存后的结构图
- 代码具体实现 EHcache
增加pom文件中shiro和ehcache之间的依赖关系
//增加shiro与ehcache之间的依赖关系
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
<version>1.9.1</version>
</dependency>
增加 配置文件中realms 自定义文件缓存开启代码新增编写
@Bean
public MyRealm myRealm(){
MyRealm myRealm = new MyRealm();
//此处添加认证器 及 散列次数
//HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
//credentialsMatcher.setHashAlgorithmName("md5");
// 2.1、设置 散列次数
//credentialsMatcher.setHashIterations(12);
//myRealm.setCredentialsMatcher(credentialsMatcher);
//增加缓存优化新增
myRealm.setCacheManager(new EhCacheManager());
myRealm.setCachingEnabled(true);//设置全局缓存开启
myRealm.setAuthenticationCachingEnabled(true);// 开启缓存-针对认证功能
myRealm.setAuthorizationCachingEnabled(true);//开启授权缓存
myRealm.setAuthenticationCacheName("authenticateName");//开启认证名字全称
myRealm.setAuthorizationCacheName("authorizationName");//开启授权名字全称
return myRealm;
}
- 代码实现缓存redis
1、增加redis 万Pom.、xml jar
<!--lombok注解-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--添加redis依赖1-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、新创建RedisCacheManager.java文件
/**
* 实现cacheManager
*/
public class RedisCacheManager implements CacheManager {
@Override
public <K, V> Cache<K, V> getCache(String s) throws CacheException {
return new RedisCache<K,V>();
}
}
2.1、创建RedisCache 部分文件
public class RedisCache<K,V> implements Cache<K,V> {
private String cacheName;
public RedisCache(String cacheName) {
this.cacheName = cacheName;
}
public RedisCache() {
}
@Autowired
private RedisTemplate redisTemplate;
@Override
public V get(K k) throws CacheException {
redisTemplate.setKeySerializer(new StringRedisSerializer());
Object o = redisTemplate.opsForHash().get(this.cacheName,k.toString());
return (V) o;
}
@Override
public V put(K k, V v) throws CacheException {
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.opsForHash().put(this.cacheName,k.toString(),v);
return null;
}
@Override
public V remove(K k) throws CacheException {
redisTemplate.opsForHash().delete(this.cacheName,k.toString());
return null;
}
....此处略去
3、新增configure文件realms文件内容
@Bean
public MyRealm myRealm(){
MyRealm myRealm = new MyRealm();
//此处添加认证器 及 散列次数
//HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
//credentialsMatcher.setHashAlgorithmName("md5");
// 2.1、设置 散列次数
//credentialsMatcher.setHashIterations(12);
//myRealm.setCredentialsMatcher(credentialsMatcher);
//增加缓存优化新增
myRealm.setCacheManager(new RedisCacheManager());
myRealm.setCachingEnabled(true);//设置全局缓存开启
myRealm.setAuthenticationCachingEnabled(true);// 开启缓存-针对认证功能
myRealm.setAuthorizationCachingEnabled(true);//开启授权缓存
myRealm.setAuthenticationCacheName("authenticateName");//开启认证名字全称
myRealm.setAuthorizationCacheName("authorizationName");//开启授权名字全称
return myRealm;
}
至此,springboot整合shiro和整合缓存管理器ehcache与redis完成。