Spring 在构造函数中获取当前应用程序上下文,而不是在后构造函数中?

Spring 在构造函数中获取当前应用程序上下文,而不是在后构造函数中?,spring,c3p0,Spring,C3p0,因此,我有一个DAO,其中包含一些可能会更改的数据源。我尝试自动连接C3P0数据源,并在PostConstruct中设置它们,但由于某种原因,如果我这样做,就会出现一些连接错误。我仍然不明白为什么,但如果我在Postconstruct中更改数据源,它们将停止工作,即使一切看起来都正常 我试图从构造函数中获取applicationContext,因此可以执行以下操作: ApplicationContextProvider.getContext().getBean("myDataSource", D

因此,我有一个DAO,其中包含一些可能会更改的数据源。我尝试自动连接C3P0数据源,并在PostConstruct中设置它们,但由于某种原因,如果我这样做,就会出现一些连接错误。我仍然不明白为什么,但如果我在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);
    }
当我运行它时,上下文为空。我怎么得到它?我错过什么了吗