Spring boot security не может автоматически подключить @Repository
Когда я добавил конфигурацию безопасности для весенней загрузки, я наткнулся на эту досадную ошибку:
2017-05-18 15: 23: 29.160 ПРЕДУПРЕЖДЕНИЕ 1806 --- [ main] ationConfigEmbeddedWebApplicationContext: Возникла исключительная ситуация во время инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'securityConfig': не удовлетворен зависимость выражается через поле 'userDetailsService'; вложенное исключение: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем 'userDetailsServiceImpl': неудовлетворенная зависимость, выраженная через поле 'userRepo'; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем userRepository: невозможно создать внутренний бин (внутренний бин)#236c098'типа [org.springframework.orm.jpa.SharedEntityManagerCreator] при установке bean свойство entityManager; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем '(внутренний бин)#236c098': невозможно разрешить ссылку на бин entityManagerFactory при установке аргумента конструктора; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем entityManagerFactory: пост-обработка одноэлементного объекта FactoryBean завершилась неудачно; вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании компонента с именем 'chatController': неудовлетворенная зависимость, выраженная через поле 'userService'; Вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем 'userServiceImpl': Неудовлетворенная зависимость, выраженная через поле 'userRepo'; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'userRepository': FactoryBean вызвала исключение при создании объекта; Вложенным исключением является java.lang.NullPointerException
это приложение SpringBoot:
public class Ailab4finalApplication {
public static void main(String[] args) {
SpringApplication.run(Ailab4finalApplication.class, args);
}
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("validation");
return messageSource;
}
}
это конфигурация безопасности весенней загрузки:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Autowired
private Environment env;
@Bean(name="passwordEncoder")
public PasswordEncoder getPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/webjars/**", "/css/**", "/registration", "/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
http.csrf().disable();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(getPasswordEncoder());
}
}
и это userRepository, который, кажется, не может быть автоматически подключен при загрузке Spring:
@Repository
public interface UserRepository extends CrudRepository<UserHibernate, Long> {
@Query("select u from UserHibernate u where u.email = ?1")
public UserHibernate findByEmail(String email);
@Query("select u from UserHibernate u where u.nickname = ?1")
public UserHibernate findByNickname(String nickname);
@Query("select u from UserHibernate u where u.id = ?1")
public UserHibernate findById(Long id);
}
и, наконец, это дерево моего проекта:
src:
-Ailab4finalApplication.java
-DatabaseConfig.java
-SecurityConfig.java
src/services:
-SecurityService.java
-SecurityServiceImpl.java
-UserDetailsServiceImpl.java
-UserService.java
-UserServiceImpl.java
src/jpa_repositories:
-SecurityService.java
-SecurityServiceImpl.java
-UserDetailsServiceImpl.java
-UserService.java
-UserServiceImpl.java
1 ответ
Решение
Я решаю проблему с помощью Autowiring в Securityconfing всех сервисов и репозиториев, которые я использовал.