首页 > 解决方案 > 如何正确初始化 UserDetailsS​​ervice Bean?

问题描述

我尝试在 Pluralsight 上了解 Spring Security 的教程。

在这里,声明了一个 UserDetailsS​​ervice bean。

@Bean
UserDetailsService userDetailsService(DataSource dataSource) {

    return new JdbcUserDetailsManager(){
        @Override
        protected List<GrantedAuthority> loadUserAuthorities(String username) {
            return AuthorityUtils.createAuthorityList("ROLE_USER");
        }
    };
}

但是,尽管我正确复制了代码,但出现以下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDetailsService' defined in donner.enterprises.godscontest.GodscontestApplication: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required  at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1708) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:581) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:503) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) ~[spring-beans-5.0.7.RELEASE.jar:5.0.7.RELEASE] ...

我理解这个错误,即我的声明中的 DataSource 没有初始化或错误。

但是这个 DataSource 工作正常。
我已经在没有那个 Bean 的情况下对其进行了测试,并且它有效。
在调试器中我也看到,dataSode 已正确插入到 UserDetailsS​​ervice 中,但它仍然没有启动。
如何摆脱这个问题?

标签: spring-bootspring-security

解决方案


推荐阅读