在我目前正在进行的一个项目中,我们需要多个配置文件,即“默认”和“云”。
DefaultContext 和 CloudContext 都包含相同的 bean 定义我们正在使用 PCF(Pivotal Cloud Foundry)
我们创建了一个界面
public interface Config {
public DataSource getDataSource();
public SomeService getService();
}
然后用这个接口实现每个配置文件
@Primary
@Configuration
@Profile("default")
public class DevConfig implements Config
{
public DataSource getDataSource() {
// create and return production datasource
}
public SomeService getService() {
// Create and return production service
}
}
然后对云做同样的事情。
@Configuratio
@Profile("cloud")
public class CloudConfig extends AbstractCloudConfig implements Config
{
public DataSource getDataSource() {
// create and return dummy datasource
}
public SomeService getService() {
// Create and return dummy service
}
}
我们在服务调用中自动装配,在处理器文件中。
@Service("processor")
public class Processor {
@Autowired Config dsConfig;
public object get(int Number)
{
return dao.get(Number,dsConfig.getDataSource());
}
}
如果我们在 PCF 中部署,它工作正常,因为配置文件是云。如果我们在本地运行,它应该获得默认配置文件,但 dsConfig 为空。你能帮忙吗?