当前位置: 首页 > 知识库问答 >
问题:

Java Vaadin Spring Security

申奇希
2023-03-14

我对UserDetailsServiceImpl()有问题

org.springframework.beans.factory.BeanCreationException:创建名为securityConfig的bean时出错:自动安装的依赖项注入失败;构造函数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;
}

应用程序启动失败((

共有2个答案

段干楚青
2023-03-14

创建一个名为UserDetailsService的接口;

public interface UserDetailsService{
    public void someMethod();
}

实现如下接口

@Service
public class UserDetailsServiceImpl implements UserDetailsService {
    @Autowired
    UserDetailsService userDetailsService;

    @Override
    public void someMethod() throws Exception {
        //your implementation
    }
}
欧阳睿范
2023-03-14

我看到了你的项目,并回顾了一些相关内容。在这里,您希望使用自定义用户和自定义用户详细信息服务来实现用户。

1)您的UserDetailsServiceImpl类实现了UserDetailsService。注入带有自动加载注释的UserService。删除此构造函数或仅对其进行注释。

@Autowired
private UserService userService;

/*public UserDetailsServiceImpl(UserService userService) {
    this.userService = userService;
}*/

2)用@Service注释您的接口UserService,用@Repository注释它的实现类UserServiceImpl,因为它们是Spring组件。

3) 从AppConfig类中删除此Bean。

@Bean
public UserDetailsService userDetailsService(){
     return new UserDetailsServiceImpl();
}

4) 当您创建名为UserDetailsServiceImpl的自定义UserDetailsService时,您需要向AuthenticationManagerBuilder介绍您的自定义实现。为此,请使用Autowired注释在SecurityConfig中插入自定义类。

@Autowired
private UserDetailsServiceImpl userDetailsService;

5) 是的,您处于最后阶段。通过设置将此userDetailsService设置为authentication manager

@Autowired
public void registerGlobalAuthentication(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(userDetailsService).passwordEncoder(getShaPasswordEncoder());
}

所以你几乎完成了。因为您使用了Spring boot,所以它嵌入了tomcat服务器(servlet容器)。转到您的pom。xml,找到包装标签(通常放在第一位)并将其更改为

<packaging>jar</packaging>

现在清理并构建您的项目(在我的例子中我使用netbean来清理和构建,您可以使用maven命令)。成功构建后,您找到了一个/target文件夹。转到文件夹并打开终端,使用java-jar Music-reover-1.0-SNAPSHOT. jar运行jar。

您的更新项目可以在此处找到。

 类似资料:

相关问答

相关文章

相关阅读