springboot2+shiro+ehcache

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Unsatisfied dependency expressed through method 'cacheManager' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ehCacheCacheManager' defined in class path resource [org/springframework/boot/autoconfigure/cache/EhCacheCacheConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.sf.ehcache.CacheManager]: Factory method 'ehCacheCacheManager' threw exception; nested exception is net.sf.ehcache.CacheException: Another unnamed CacheManager already exists in the same VM. Please provide unique names for each CacheManager in the config or do one of following:
1. Use one of the CacheManager.create() static factory methods to reuse same CacheManager with same name or create one if necessary
2. Shutdown the earlier cacheManager before creating new one with same name.
The source of the existing CacheManager is: InputStreamConfigurationSource [stream=java.io.BufferedInputStream@5f61d894]
 

关于上述报错的原因和解决方案:

原因:shiro 2.5.0以后版本呢。cachemananger采用单例模式。自定义的时候。如果不指定名称会出现重复加载的问题

解决:

依赖如下:

<dependency>
 <groupId>org.apache.shiro</groupId>
 <artifactId>shiro-core</artifactId>
 <version>1.4.0</version>
</dependency>
<dependency>
 <groupId>org.apache.shiro</groupId>
 <artifactId>shiro-spring</artifactId>
 <version>1.4.0</version>
</dependency>
<dependency>
 <groupId>org.apache.shiro</groupId>
 <artifactId>shiro-ehcache</artifactId>
 <version>1.4.0</version>
</dependency>
<!-- 基于thymeleaf的shiro扩展 -->
<dependency>
 <groupId>com.github.theborakompanioni</groupId>
 <artifactId>thymeleaf-extras-shiro</artifactId>
 <version>1.2.1</version>
</dependency>
@Bean
public EhCacheManager ehCacheManager(){
    EhCacheManager cacheManager = new EhCacheManager();
    cacheManager.setCacheManagerConfigFile("classpath:ehcache.xml");
    return cacheManager;
}
@Bean
public SessionManager sessionManager(){
    DefaultSessionManager sessionManager = new DefaultSessionManager();
    sessionManager.setCacheManager(ehCacheManager());
    return sessionManager;
}

 

 @Bean(name = "securityManager")
    public SecurityManager securityManager(){
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(realm());
        securityManager.setSessionManager(sessionManager());
        //记住我管理
        securityManager.setRememberMeManager(rememberMeManager());
//        securityManager.setCacheManager(ehCacheManager());
        return securityManager;
    }

 

@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
    EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();
    cacheManagerFactoryBean.setShared(true);
    return cacheManagerFactoryBean;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: springboot+vue+shiro是一种常见的Web应用程序开发架构,其中springboot作为后端框架,vue作为前端框架,shiro作为安全框架。使用这种架构可以快速开发出高效、安全的Web应用程序。其中,springboot提供了快速开发的能力,vue提供了现代化的前端交互体验,shiro提供了安全认证和授权的能力。这种架构已经被广泛应用于企业级Web应用程序的开发中。 ### 回答2: Spring Boot是一个开箱即用的框架,可用于快速开发基于Spring的Web应用程序,它简化了Spring应用程序的搭建和部署过程,可以帮助程序员避免一些开发中的繁琐细节。Vue.js是一个流行的JavaScript框架,可用于构建现代单页Web应用程序(SPA)。它提供了一个灵活和高效的数据绑定机制,优化了前端开发和用户体验。Shiro是一个Java的安全框架,提供了身份认证,授权,会话管理和加密等功能,可用于保护Web应用程序的安全性。 在一个现代Web应用程序中,身份验证和授权是非常重要的,Spring Boot结合Shiro可以帮助我们快速实现身份认证和授权功能,Shiro支持多种认证方式,包括基于表单的身份验证和基于JSON Web Token(JWT)认证。此外,Shiro还支持基于角色的授权和细粒度的访问控制。Spring Boot和Vue.js配合使用可以大大提高Web应用程序的交互性和响应性,Vue.js的虚拟DOM机制可以支持SPA的快速加载,减少页面切换延迟,用户可以实现无缝的操作。 另外,Spring Boot还可以支持异步编程和非阻塞I/O模型,在高并发场景下可以提高应用程序的性能和吞吐量。同时,Spring Boot还有丰富的插件生态系统,比如Mybatis和Hibernate等ORM框架,可以帮助程序员快速访问数据库。总的来说,Spring Boot结合Vue.js和Shiro可以大大提高应用程序的开发效率和可扩展性,同时保证Web应用程序的安全性和稳定性。 ### 回答3: SpringBoot是一款让开发者更容易使用Spring框架的工具,它提供了很多开箱即用的特性和自动化配置,可以帮助我们更快速地搭建和构建Java Web应用。Vue.js是一款流行的JavaScript框架,可以帮助我们构建交互性强、效果美观的前端应用。而Shiro是一款开源的安全框架,可以为我们的应用提供身份验证、授权、会话管理、加密等能力。 SpringBoot与Vue.js的结合可以让我们更快速地构建现代化的Web应用,其中前端页面使用Vue.js实现,后端服务则可以使用SpringBoot提供。在进行权限控制时,可以采用Shiro框架进行身份验证和权限控制,这能够让我们的应用更安全可靠。Shiro提供的安全过滤器可以根据请求路径,判断当前用户是否有访问权限,以及需要使用哪种授权方式。同时,Shiro还提供了很多默认的安全模块,如密码加密、会话管理等,这些模块可以为我们的应用提供更加全面的安全保护。 总体来说,SpringBoot、Vue.js和Shiro是一组非常强大的开发工具,通过它们的结合,我们可以更快速地构建高效、安全、现代化的Web应用。在实际开发中,我们可以充分挖掘这些工具的优势,同时也要时刻关注它们的发展和变化,以便更好地应对新的需求和挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值