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