@Autowire失败了@Repository

r.r*_*uez 3 spring annotations repository autowired

我无法使用@Repository注释类使@Autowire注释工作.

我有一个界面:

public interface AccountRepository {
    public Account findByUsername(String username);
    public Account findById(long id);
    public Account save(Account account);
}
Run Code Online (Sandbox Code Playgroud)

实现用@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
    }
}
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我需要使用此存储库通过用户名查找帐户,因此我使用自动装配,但我正在检查它是否有效并且accountRepository实例始终为null:

@Component
public class FooClass {
    @Autowired
    private AccountRepository accountRepository;

    ...

    public barMethod(){
        logger.debug(accountRepository == null ? "accountRepository is NULL" : "accountRepository IS NOT NULL");
    }
}
Run Code Online (Sandbox Code Playgroud)

我还设置了包来扫描components(sessionFactory.setPackagesToScan(new String [] {"com.foo.bar"});),并且它确实自动装配了用@Component注释的其他类,但是在这个用@Repository注释的类中,它总是为null.

我错过了什么吗?

chr*_*ke- 5

您的问题很可能是您自己实例化bean new,因此Spring不知道它.重新注入bean,或者创建bean @Configurable并使用AspectJ.