Spring Boot 集成 Apache Shiro 增加 Cache 的设置

Spring Boot 集成 Apache Shiro 增加 Cache 的设置

  1. 上边我们说过如何进行 SpringBoot 集成 Apache Shiro
  2. Spring Boot 集成 Apache Shiro : https://blog.csdn.net/Roobert_Chao/article/details/89971828
  1. 在 pom.xml 文件中加入 缓存的 依赖。
 

    org.springframework.boot
    spring-boot-starter-cache



    net.sf.ehcache
    ehcache



    org.apache.shiro
    shiro-ehcache
    1.4.0

  1. 配置管理 cache 的管理。
    【EhcacheConfig 】
@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
    EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();
    cacheManagerFactoryBean.setShared(true);		// 设置共享
    return cacheManagerFactoryBean;
}

【在 ShiroConfig 做修改】

@Bean
public EhCacheManager ehCacheManager(){
    EhCacheManager cacheManager = new EhCacheManager();
    // cacheManager.setCacheManagerConfigFile("classpath:ehcache.xml");
    cacheManager.setCacheManager(cacheManager);
    return cacheManager;
}

 @Bean
 public SecurityManager securityManager() {
     DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
     securityManager.setRealm(myShiroRealm());
     securityManager.setCacheManager(ehCacheManager);
     return securityManager;
 }

@Bean
public MyShiroRealm myShiroRealm() {
    MyShiroRealm myShiroRealm = new MyShiroRealm();
    myShiroRealm.setCacheManager();
    myShiroRealm.setCredentialsMatcher(credentialsMatcher());   // 设置密码的对比
    return myShiroRealm;
}

@Bean
public SecurityManager securityManager() {
    DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
    securityManager.setRealm(userRealm());
    securityManager.setCacheManager(ehCacheManager());
    return securityManager;
}
  1. 修改 MyShiroRealm 类,添加 @Lazy 注解延迟注入 LoginService 中。
    Spring Boot 集成 Apache Shiro 增加 Cache 的设置_第1张图片
    添加 @Lazy 注解,否则会导致该 LoginService 里的 @Cacheable 缓存注解、@Transactional 事务注解等失效。

你可能感兴趣的:(SpringBoot,ssm,Shiro,cache)