gpt4 book ai didi

java - 通过类型索引为 0 的构造函数参数表示的 Spring 不满足的依赖关系

转载 作者:IT老高 更新时间:2023-10-28 13:47:07 25 4
gpt4 key购买 nike

完整的消息是

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: 
Error creating bean with name 'userRepositoryUserDetailsService' defined in file
[/Users/tdaley/apache-tomcat-8.0.12/wtpwebapps/cloud-management/WEB-INF/classes/
org/cru/cloud/management/security/UserRepositoryUserDetailsService.class]:
Unsatisfied dependency expressed through constructor argument with index 0 of type
[org.cru.cloud.management.data.UserRepository]: : No qualifying bean of
type [org.cru.cloud.management.data.UserRepository] found for dependency:
expected at least 1 bean which qualifies
as autowire candidate for this dependency.
Dependency annotations: {};
nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [org.cru.cloud.management.data.UserRepository] found
for dependency: expected at least 1 bean
which qualifies as autowire candidate for this dependency.
Dependency annotations: {}

我正在使用 Java 配置。以下代码段来自spring boot教程gs-spring-security-3.2:

package org.cru.cloud.management.security;

import java.util.Collection;

import org.cru.cloud.management.data.User;
import org.cru.cloud.management.data.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

@Service
public class UserRepositoryUserDetailsService implements UserDetailsService {
private final UserRepository userRepository;

@Autowired
public UserRepositoryUserDetailsService(UserRepository userRepository) {
this.userRepository = userRepository;
}

@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
User user = userRepository.findByEmail(username);
if(user == null) {
throw new UsernameNotFoundException("Could not find user " + username);
}
return new UserRepositoryUserDetails(user);
}

private final static class UserRepositoryUserDetails extends User implements UserDetails {

private UserRepositoryUserDetails(User user) {
super(user);
}

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return AuthorityUtils.createAuthorityList("ROLE_USER");
}

@Override
public String getUsername() {
return getEmail();
}

@Override
public boolean isAccountNonExpired() {
return true;
}

@Override
public boolean isAccountNonLocked() {
return true;
}

@Override
public boolean isCredentialsNonExpired() {
return true;
}

@Override
public boolean isEnabled() {
return true;
}

private static final long serialVersionUID = 5639683223516504866L;
}
}

public interface UserRepository extends CrudRepository<User, Long>
{
User findByEmail(String email);
}

关于如何解决这个问题的建议?

最佳答案

你有 @EnableJpaRepositories在您的配置类中的某处进行注释,并且扫描设置是否正确?默认情况下,注释类或接口(interface)所在的包成为存储库扫描的基础包。您可以通过为 basePackages(甚至更好 - basePackageClasses)属性设置一个值来控制它。

您可以使用 Spring Tools Suite 来检查在您的上下文中声明了哪些 bean(存储库应该在 Spring Elements > Beans > Spring Data Repositories 下可见)。

关于java - 通过类型索引为 0 的构造函数参数表示的 Spring 不满足的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26577084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com