0

Lorsque j'ai ajouté la configuration de sécurité au printemps démarrage, je suis tombé dans cette erreur ennuyeux:sécurité de démarrage de printemps ne peut pas autowired un @Repository

 
2017-05-18 15:23:29.160 WARN 1806 --- [   main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityConfig': Unsatisfied dependency expressed through field 'userDetailsService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userDetailsServiceImpl': Unsatisfied dependency expressed through field 'userRepo'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#236c098' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#236c098': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory': Post-processing of FactoryBean's singleton object failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'chatController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userServiceImpl': Unsatisfied dependency expressed through field 'userRepo'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException 

c'est le springBootApplication:

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; 
    } 
} 

c'est la configuration de la sécurité de démarrage de ressort:

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

et ce le userRepository qui semble ne peut pas être autowired par botte de printemps:

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

et enfin, voici mon arbre projet:

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

à quoi ressemble votre 'UserDetailsServiceImpl'? Implémente-t-il 'org.springframework.security.core.userdetails.UserDetailsService'? – pvpkiran

+1

Publiez la trace de pile complète. –

+0

'@ SpringBootApplication'? – Jaiwo99

Répondre

0

-je résoudre le problème en Autowiring dans Securityconfing tous les services et référentiels que j'ai utilisés.