3
저는 Spring-World의 초보자입니다. Spring Security 및 JPA가있는 Spring Boot 응용 프로그램이 있습니다. 또한 CrudRepository와 UserDetailsService도 있고,UserDetailsService에 Autowired CrudRepository가 항상 null입니다.
@Repository
public interface UserDao extends CrudRepository<User, Long> {
public Collection<User> findByName(String name);
}
ApiUserDetailsService
@Component
public class ApiUserDetailsService implements UserDetailsService {
@Autowired
private UserDao dao;
@Override
public UserDetails loadUserByUsername(final String username) throws UsernameNotFoundException {
assert dao != null;
...
}
}
UserDao
Application 클래스
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
아래 참조 6,
보안 구성
@Configuration
@EnableWebSecurity
public class HttpBasicAuthConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.requestCache().requestCache(new NullRequestCache());
http.httpBasic();
http.authorizeRequests().anyRequest().authenticated();
}
@Autowired
public void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(new ApiUserDetailsService());
}
}
를 autowire의 DAO는 항상 null 인 이유는 무엇입니까? 내가 뭘 잘못 했니?
한 가지 제안이 구성 요소가 검색되지 않는 것이있을 수 있습니다. @ComponentScan - "은 검사 할 특정 패키지를 정의하도록 지정할 수 있습니다. 특정 * 패키지가 정의되지 않은 경우이 주석이있는 클래스의 패키지에서 검사가 수행됩니다." – birya
"Spring Data'를 사용하고 있습니까?, UserDao는 인터페이스입니다 , 또한 귀하의 registerAuthentication에서 새로운'ApiUserDetailsService'를 생성하고 있습니다. autowired해야합니다. –
[내 Spring @Autowired 필드가 null 인 이유는 무엇입니까?] (http://stackoverflow.com/questions/19896870/why-is-my-spring-autowired-field-null) – chrylis