Я не могу обработать аннотацию @Autowire с аннотированным классом @Repository.@Autowire не работает с @Repository
У меня есть интерфейс:
public interface AccountRepository {
public Account findByUsername(String username);
public Account findById(long id);
public Account save(Account account);
}
и класс, реализующий интерфейс аннотированный с @Repository:
@Repository
public class AccountRepositoryImpl implements AccountRepository {
public Account findByUsername(String username){
//Implementing code
}
public Account findById(long id){
//Implementing code
}
public Account save(Account account){
//Implementing code
}
}
В другом классе, мне нужно использовать такое хранилище, чтобы найти учетную запись по имени пользователя, поэтому я использую autowiring, но я проверяю, работает ли он, и экземпляр accountRepository всегда имеет значение null:
@Component
public class FooClass {
@Autowired
private AccountRepository accountRepository;
...
public barMethod(){
logger.debug(accountRepository == null ? "accountRepository is NULL" : "accountRepository IS NOT NULL");
}
}
Я также установить пакеты для сканирования для компонентов (sessionFactory.setPackagesToScan(new String [] {"com.foo.bar"});
), и это делает autowire других классов аннотированных с @Component, например, но в этой аннотации @Repository, всегда пустой.
Я что-то упустил?
Как вы получаете ссылку на 'FooClass'? Вы говорите «FooClass foo = new FooClass();'? – chrylis
Вы нашли проблему, я получал ссылку с помощью 'new' вместо autowiring. Отправьте ответ, если вы хотите принять его как правильный. Спасибо большое! –
Возможный дубликат [Почему моя Spring @Autowired field null?] (Http://stackoverflow.com/questions/19896870/why-is-my-spring-autowired-field-null) – chrylis