spring-mvc - Spring OAuth - 没有 PlatformTransactionManager 类型的合格 bean

标签 spring-mvc spring-security spring-security-oauth2 spring-oauth2

通过替换 BASIC auth,我成功地将 OAuth2 集成到我以前的应用程序(REST 服务)中。

然后我得到以下异常:

No qualifying bean of type [org.springframework.transaction.PlatformTransactionManager] is defined: expected single matching bean but found 2: transactionManagerDB2,transactionManager

当我取出 bean 时 transactionManagerDB2它开始工作正常。
我有 2 个事务管理器,因为我有 2 个连接的数据库。

因为我有一个 InMemoryTokenStore ,我很好奇 TransactionManager 的需求. (以及为什么 Oauth 无法在默认名称下选择“transactionManager”)

不知何故,我通过 configureGlobal(AuthenticationManagerBuilder auth){} 配置了一个 CustomeUserDetailService ,以前和现在使用单个 TransactionManager 都可以正常工作。

我用过 sparklr-boot Spring Boot 应用程序将 OAuth 与我的应用程序集成。
(感谢 Dave Syer 做出如此简单易懂的例子)

我正在使用:
  • Spring 4.2.5
  • Spring 安全 4.0.4
  • Spring OAuth 2.0.9
  • (无 Spring Boot )
  • 最佳答案

    问题是 DefaultTokenServices 中的方法是用 @Transactional 注释的。因此,即使您不使用数据库,您也需要在授权服务器配置中添加这样的事务管理器 bean:

    @Bean
        public PlatformTransactionManager annotationDrivenTransactionManager() {
            return new ResourceTransactionManager() {
                @Override
                public Object getResourceFactory() {
                    return null;
                }
    
                @Override
                public TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException {
                    return null;
                }
    
                @Override
                public void commit(TransactionStatus status) throws TransactionException {
    
                }
    
                @Override
                public void rollback(TransactionStatus status) throws TransactionException {
    
                }
            };
        }
    

    关于spring-mvc - Spring OAuth - 没有 PlatformTransactionManager 类型的合格 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35764036/

    相关文章:

    java - 如何使javax验证只显示一条错误信息

    java - 从 Hibernate 和 Spring 连接到多个数据库

    java - 如何使用 Spring Security 创建注销?

    java - Spring 安全 : AuthenticationProvider and UserDetailsService not working as expected

    java - 无效的 JWK 设置 URL : null

    java - Spring JWT - 添加自定义声明

    java - spring-mvc Controller 和异常处理

    java - spring factory-method和factory-bean有什么区别?

    spring - java.lang.IllegalStateException(未找到方法) : Calling MockMvc. 使用自定义 Filter 在一次测试中执行多次

    oauth-2.0 - Spring security oauth 2 和客户端凭证流程