Spring - репозиторий не будет создавать экземпляр/автоматическое подключение в классе конфигурацииJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Spring - репозиторий не будет создавать экземпляр/автоматическое подключение в классе конфигурации

Сообщение Anonymous »

Я создавал проектное приложение и хотел включить в него безопасность JWT. Я следовал инструкциям, и у меня возникла проблема с этим фрагментом кода.
@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();
}
}

Я получаю эту ошибку:
ApplicationConfig.java:21: error: variable userRepository not initialized in the default constructor
private final UserRepository userRepository;
^

Из обширного чтения в Google/stackoverflow я пришел к выводу, что Spring не создает экземпляр репозитория до того, как Spring загрузит этот класс конфигурации. Среди прочего я попробовал автоматическое подключение репозитория.
Я не видел, чтобы кто-то еще публиковал эту проблему на странице GitHub, за которой я следил, и я не знаю, как ее исправить. советы приветствуются!
Другие соответствующие фрагменты кода:
@Repository
public interface UserRepository extends JpaRepository {
Optional findByUsername(String username);
}

@SpringBootApplication
@EnableConfigurationProperties(ConfigProperties.class)
@EnableJpaRepositories("com.browna.teller_back.repositories")
public class TellerBackApplication {

public static void main(String[] args) {
SpringApplication.run(TellerBackApplication.class, args);
}

}

Класс сущности пользователя
@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;
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... tion-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»