spring-boot - 如何正确初始化 UserDetailsService Bean?
问题描述
我尝试在 Pluralsight 上了解 Spring Security 的教程。
在这里,声明了一个 UserDetailsService 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 已正确插入到 UserDetailsService 中,但它仍然没有启动。
如何摆脱这个问题?
解决方案
推荐阅读
- android - 在 android 中使用 volley 库解析嵌套的 JSON 数组
- javascript - 如何将 API 生成的 JavaScript 变量作为表单的一部分传递给 php 变量?
- c++ - 从终止处理程序访问所有未捕获的异常
- r - 如何在管道工 API 中返回特定的错误代码?
- reactjs - 如何使用单选按钮更改此状态
- c# - 如果名称与字段名称不同,如何通过反射获取字段值
- module - 如何在运行时分发和交换业务逻辑?
- java - 如何删除java中的空值,例如(,,,test,tester,,java_test,,,)
- node.js - 如何在端口 443 上运行 nodejs 应用程序
- reactjs - 如果它会导致向用户显示的内容发生变化,那么在 componentDidMount 方法中获取远程数据有什么意义?