使用Spring-Boot和OAuth2的JdbcTokenStore实现

时间:2014-03-31 18:34:39

标签: java spring spring-security oauth-2.0 spring-boot

HeJ小鼠,

我正在尝试使用Spring-Boot在Application中实现OAuth2。我正在努力实现 JdbcTokenStore (我是否理解这一点,这是将令牌存储在数据库中?)

我的代码如下:

@Configuration
@EnableAuthorizationServer
protected static class OAuth2Config extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private DataSource dataSource;

    private TokenStore tokenStore = new JdbcTokenStore(dataSource);

...

    @Override
    public void configure(OAuth2AuthorizationServerConfigurer oauthServer) throws Exception {
         oauthServer.tokenStore(tokenStore).authenticationManager(authenticationManager);
    }

这样做我收到以下错误:

  

引起:org.springframework.beans.BeanInstantiationException:无法实例化bean类[se ..... config.OAuth2ServerConfig $ OAuth2Config $$ EnhancerBySpringCGLIB $$ f6b9ba94]:构造函数抛出异常;嵌套异常是java.lang.IllegalArgumentException:需要DataSource

数据库连接本身似乎有效,至少我可以使用 InMemoryTokenStore 登录数据库中存储的用户数据(用户名/密码)。

任何人都可以告诉我我做错了什么或推荐那些有关这个问题的好例子吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

这是一个基本的依赖注入问题(没什么特别的,没有oauth-或Boot-相关)。您无法初始化@Autowired中的字段(初始化后进行布线)。您需要将其拉出@PostConstruct@Bean