Autowire注入顺序问题
这是这几天使用spring security配置RememberMe功能中遇见的错误。以下是错误代码
@Autowired
private PersistentTokenRepository pt;
@Autowired
private DataSource ds;
@Bean
public PersistentTokenRepository getPersitent(){
JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
jdbcTokenRepository.setDataSource(ds);
return jdbcTokenRepository;
}
如上配置产生以下错误
Caused by: java.lang.IllegalArgumentException: Property 'dataSource' is required
然后通过在getPersitent方法中答应DataSource为null。原因是先注入pt,先执行getPersitent方法,但是DataSouce对象还没有创建,我们知道@Autowire默认是require=true,于是产生如上错误。我们只用调整顺序,保证被依赖的对象先注入,即可解决问题。