繁体   English   中英

创建名称为“ securityConfiguration”的bean时出错:通过字段“ userDetailsS​​ervice”表示的不满意依赖性

[英]Error creating bean with name 'securityConfiguration': Unsatisfied dependency expressed through field 'userDetailsService'

我试图创建一个使用Spring Security和OAuth2通过数据库进行身份验证的Spring Boot应用程序。 我正在尝试遵循此存储库的GitHub示例( https://github.com/TechPrimers/spring-security-db-example ),现在遇到此错误。

释义的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!

这是我的课程:

CustomUserDetailsS​​ervice

  @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();
  }
}

用户资料库

@Repository
public interface UsersRepository extends JpaRepository<AccountUser, Integer> {
    Optional<AccountUser> findByName(String username);
}

AccountUser

@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 ....*/
@Repository
public interface UsersRepository extends JpaRepository<AccountUser, Integer> {
    Optional<AccountUser> findByName(String username);
}

用下面替换

@Repository
public interface UsersRepository extends JpaRepository<AccountUser, Integer> {
    Optional<AccountUser> findByLastName(String username);
}

您没有名称作为实体的一部分,JPA无法找到属性“名称”

订购您需要的

@Repository公共接口UsersRepository扩展了JpaRepository {可选的findByLastNameOrderByAccessedDesc(String username); }

在这里,您可以在表2.3的此部分找到jpa查询的示例https://docs.spring.io/spring-data/jpa/docs/1.5.0.RELEASE/reference/html/jpa.repositories.html 方法名称中支持的关键字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM