gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 21:35:42 27 4
gpt4 key购买 nike

通过替换 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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com