import com.netflix.config.PolledConfigurationSource; //导入依赖的package包/类
@Override
public PropertySource> locate(Environment environment) {
try {
// configuration from local properties file
ConcurrentMapConfiguration configFromPropertiesFile = new ConcurrentMapConfiguration(new PropertiesConfiguration("application.yml"));
// configuration from system properties
ConcurrentMapConfiguration configFromSystemProperties = new ConcurrentMapConfiguration(new SystemConfiguration());
// configuration from a dynamic source
//PolledConfigurationSource source = new NetflixUrlPolledConfigurationSource();
PolledConfigurationSource source = new NetflixEurekaPolledConfigurationSource();
AbstractPollingScheduler scheduler = new FixedDelayPollingScheduler();
DynamicConfiguration dynamicConfiguration = new DynamicConfiguration(source, scheduler);
// create a hierarchy of configuration that makes
// 1) dynamic configuration source override system properties
// 2) system properties override properties file
ConcurrentCompositeConfiguration finalConfig = new ConcurrentCompositeConfiguration();
finalConfig.addConfiguration(dynamicConfiguration, "dynamicConfig");
finalConfig.addConfiguration(configFromSystemProperties, "systemConfig");
finalConfig.addConfiguration(configFromPropertiesFile, "fileConfig");
// install with ConfigurationManager so that finalConfig
// becomes the source of dynamic properties
ConfigurationManager.install(finalConfig);
} catch(Exception e) {
logger.error(e.getMessage());
}
return null;
}