【发布时间】:2018-04-16 19:35:50
【问题描述】:
我正在尝试创建一个 Spring Boot 应用程序,它使用 Spring Security 和 OAuth2 通过数据库进行身份验证。我正在尝试关注此存储库 (https://github.com/TechPrimers/spring-security-db-example) 的 GitHub 示例,现在遇到此错误。
释义 StackTrace :
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfiguration': Unsatisfied dependency expressed through field 'userDetailsService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userDetailsDervice': Unsatisfied dependency expressed through field 'usersRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'usersRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional com.user.path.to.repository.UsersRepository.findByName(java.lang.String)! No property name found for type AccountUser!
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userDetailsDervice': Unsatisfied dependency expressed through field 'usersRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'usersRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional com.user.path.to.repository.UsersRepository.findByName(java.lang.String)! No property name found for type AccountUser!
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'usersRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional com.user.path.to.repository.UsersRepository.findByName(java.lang.String)! No property name found for type AccountUser!
Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.Optional com.user.path.to.repository.UsersRepository.findByName(java.lang.String)! No property name found for type AccountUser!
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property name found for type AccountUser!
这是我的课程:
CustomUserDetailsService
@Service("userDetailsDervice")
public class CustomUserDetailsService implements UserDetailsService {
@Autowired
private UsersRepository usersRepository;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
Optional<AccountUser> optionalUsers = usersRepository.findByName(username);
optionalUsers
.orElseThrow(() -> new UsernameNotFoundException("Username not found"));
return optionalUsers
.map(CustomUserDetails::new).get();
}
}
UsersRepository
@Repository
public interface UsersRepository extends JpaRepository<AccountUser, Integer> {
Optional<AccountUser> findByName(String username);
}
帐户用户
@Entity
@Table(name = "User")
public class AccountUser {
@Column(name = "title")
private String title;
@Column(name = "firstname")
private String firstname;
@Column(name = "lastname")
private String lastName;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "email")
private String email;
@Column(name = "password")
private String password;
@Column(name = "modified")
private Date modified;
@Column(name = "accessed")
private Date accessed;
/* ... getters and setters ....*/
【问题讨论】:
标签: java spring spring-security oauth-2.0 spring-jdbc