Code: Select all
@Configuration
@RequiredArgsConstructor
public class ApplicationConfig {
private final UserRepository repository;
@Bean
public UserDetailsService userDetailsService() {
return username -> repository.findByUsername(username)
.orElseThrow(() -> new UsernameNotFoundException("User not found"));
}
@Bean
public AuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService());
authProvider.setPasswordEncoder(passwordEncoder());
return authProvider;
}
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception {
return config.getAuthenticationManager();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
Code: Select all
ApplicationConfig.java:21: error: variable userRepository not initialized in the default constructor
private final UserRepository userRepository;
^
Ich habe noch niemanden gesehen, der dieses Problem auf der GitHub-Seite gepostet hat, der ich gefolgt bin, und ich bin mir nicht sicher, wie ich es beheben kann. Ratschläge willkommen!
Weitere relevante Codeausschnitte folgen:
Code: Select all
@Repository
public interface UserRepository extends JpaRepository {
Optional findByUsername(String username);
}
Code: Select all
@SpringBootApplication
@EnableConfigurationProperties(ConfigProperties.class)
@EnableJpaRepositories("com.browna.teller_back.repositories")
public class TellerBackApplication {
public static void main(String[] args) {
SpringApplication.run(TellerBackApplication.class, args);
}
}
Code: Select all
@Builder
@Entity
@Table(name = "users",
uniqueConstraints = {
@UniqueConstraint(columnNames = "username"),
@UniqueConstraint(columnNames = "email")
})
public class User implements UserDetails {
@Getter
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@NotBlank
@Size(max = 20)
private String username;
@NotBlank
@Size(max = 50)
@Email
private String email;
@NotBlank
@Size(max = 120)
private String password;
@Enumerated(EnumType.STRING)
private Role role;
public User() {
}
public User(String username, String email, String password) {
this.username = username;
this.email = email;
this.password = password;
}
public @NotBlank @Size(max = 20) String getUsername() {
return username;
}