的Java + Vaadin + Spring Security的
我有问题,UserDetailsServiceImpl()的Java + Vaadin + Spring Security的
org.springframework.beans.factory.BeanCreationException:错误 创建名为 'securityConfig' 豆:自动装配 依赖注入失败;构造函数UserDetailsServiceImpl()是 不确定
@Bean
public UserDetailsService userDetailsService(){
return new UserDetailsServiceImpl();
}
@Service
@NoArgsConstructor(force = true)
public class UserDetailsServiceImpl implements UserDetailsService {
private final UserService userService;
@Autowired
public UserDetailsServiceImpl(UserService userService) {
this.userService = userService;
}
应用程序未能启动((
我看到你的项目,并查看一些关于that.Here要同时实现用户与CustomUser
和UserDetailsService
自定义的UserDetailsService。
1)您的UserDetailsServiceImpl
类实现UserDetailsService
。将您的UserService
注入Autowired
注释。删除此构造函数或仅对其进行注释。
@Autowired
private UserService userService;
/*public UserDetailsServiceImpl(UserService userService) {
this.userService = userService;
}*/
2)标注您的接口UserService
与@Service
和它的实现类UserServiceImpl
与@Repository
因为它们是春天的组成部分。
3)从AppConfig
类删除此Bean。
@Bean
public UserDetailsService userDetailsService(){
return new UserDetailsServiceImpl();
}
4)当你创建自定义UserDetailsService
命名为UserDetailsServiceImpl
,所以你需要引入你的定制实现AuthenticationManagerBuilder
。为此,请使用@Autowired
注释将您的自定义类注入SecurityConfig
。
@Autowired
private UserDetailsServiceImpl userDetailsService;
5)是的,你处于最后阶段。通过设置将此userDetailsService设置为身份验证管理器
@Autowired
public void registerGlobalAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(getShaPasswordEncoder());
}
所以你差不多完成了。由于您使用了Spring-boot
,所以它嵌入了tomcat服务器(一个servlet容器)。转到您pom.xml
,发现包装标签(通常放置在第一),并将其更改为
<packaging>jar</packaging>
现在清理并生成项目(在我来说,我使用的NetBeans清洁而建,你可以使用Maven命令)。成功构建后,您会找到一个/target
文件夹。转到文件夹并打开终端,使用java -jar music-review-1.0-SNAPSHOT.jar
运行该罐子。
您的更新项目可以找到here。
创建一个名为UserDetailsService的接口;
public interface UserDetailsService{
public void someMethod();
}
实现接口作为遵循
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
UserDetailsService userDetailsService;
@Override
public void someMethod() throws Exception {
//your implementation
}
}
这是一个maven ... – Serhii
maven命令使用什么来运行项目? –
你可以看到我的项目https://drive.google.com/file/d/17VQX490sQ4n5K8s94pCTFDAookQh0_hS/view?usp=sharing – Serhii