所以我有一个DAO,其中包含一些可能会发生变化的数据源。我尝试自动装配C3P0数据源并在PostCostruct中设置它们,但出于某种原因,如果我这样做,我会遇到一些连接错误。我仍然不明白为什么,但如果我改变了Postconstruct中的数据源,他们就会停止工作,即使一切看起来还不错。
我试图从构造函数中获取applicationContext,所以我可以这样做:
ApplicationContextProvider.getContext().getBean("myDataSource", DataSource.class);
这是我的ApplicationContextProvider类:
@Component
public class ApplicationContextProvider implements
ApplicationContextAware
{
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
{
context = applicationContext;
}
public static ApplicationContext getContext() {
return context;
}
}
这几乎是我与之合作的DAO:
@Component
public abstract class myDao{
private DataSource myDataSource;
protected myDao(){
dataSourceToUse = ApplicationContextProvider.getContext().getBean("dataSourceId", DataSource.class);
}
当我运行它时,上下文为空。我怎么得到它?我错过了什么吗?