在构造函数中获取当前的Application上下文,而不是在PostConstruct中?

时间:2017-11-10 21:36:19

标签: spring c3p0

所以我有一个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);
    }

当我运行它时,上下文为空。我怎么得到它?我错过了什么吗?

0 个答案:

没有答案