【发布时间】:2019-03-02 00:51:54
【问题描述】:
我刚开始通过阅读 Spring Boot in Action 一书开始学习 Spring Boot,我正在复制书中的示例,尝试自己运行它们,但我在使用 findOne 时遇到了问题。该项目应该是一个简单的阅读列表。 这是代码:
界面:
public interface ReaderRepository extends JpaRepository<Reader, String> {
}
Reader 类:
@Entity
public class Reader implements UserDetails {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String fullname;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getFullname() {
return fullname;
}
public void setFullname(String fullname) {
this.fullname = fullname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
// UserDetails methods
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return Arrays.asList(new SimpleGrantedAuthority("READER"));
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
安全配置
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private ReaderRepository readerRepository;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/").access("hasRole('READER')")
.antMatchers("/**").permitAll()
.and()
.formLogin()
.loginPage("/login")
.failureUrl("/login?error=true");
}
@Override
protected void configure(
AuthenticationManagerBuilder auth) throws Exception {
auth
.userDetailsService(new UserDetailsService() {
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException {
return readerRepository.findOne(username);
}
});
}
}
还有错误:
我希望有人可以帮助我,因为我迷路了。 谢谢。
【问题讨论】:
-
检查您在 ReaderRepository 上的导入,您可能导入了错误的“Reader”
-
代码似乎没问题。正如@JorgeC 建议的那样,只需检查您的导入即可。也许你可以执行干净的构建。
-
感谢您的回答。我改变了我的导入,仍然是同样的错误。当我尝试构建时,出现此错误:(38, 48) java: method findOne in interface org.springframework.data.repository.query.QueryByExampleExecutor
cannot be applied to given types;必需:org.springframework.data.domain.Example 找到:java.lang.String 原因:无法推断类型变量 S(参数不匹配;java.lang.String 无法转换为 org.springframework.data .domain.Example) -
您使用的是哪个 Spring Boot 版本?
-
我使用的是 Spring Boot 2.0.5
标签: java spring-boot spring-data-jpa