下面列出了org.springframework.beans.factory.config.YamlPropertiesFactoryBean#setResources ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Binds the YAML formatted value of a deployment property to a {@link KubernetesDeployerProperties} instance.
*
* @param kubernetesDeployerProperties the map of Kubernetes deployer properties
* @param propertyKey the property key to obtain the value to bind for
* @param yamlLabel the label representing the field to bind to
* @return a {@link KubernetesDeployerProperties} with the bound property data
*/
private static KubernetesDeployerProperties bindProperties(Map<String, String> kubernetesDeployerProperties,
String propertyKey, String yamlLabel) {
String deploymentPropertyValue = kubernetesDeployerProperties.getOrDefault(propertyKey, "");
KubernetesDeployerProperties deployerProperties = new KubernetesDeployerProperties();
if (!StringUtils.isEmpty(deploymentPropertyValue)) {
try {
YamlPropertiesFactoryBean properties = new YamlPropertiesFactoryBean();
String tmpYaml = "{ " + yamlLabel + ": " + deploymentPropertyValue + " }";
properties.setResources(new ByteArrayResource(tmpYaml.getBytes()));
Properties yaml = properties.getObject();
MapConfigurationPropertySource source = new MapConfigurationPropertySource(yaml);
deployerProperties = new Binder(source)
.bind("", Bindable.of(KubernetesDeployerProperties.class)).get();
} catch (Exception e) {
throw new IllegalArgumentException(
String.format("Invalid binding property '%s'", deploymentPropertyValue), e);
}
}
return deployerProperties;
}
static Function<String, Properties> yamlParserGenerator(Environment environment) {
return s -> {
YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
yamlFactory.setDocumentMatchers(properties -> {
String profiles = properties.getProperty("spring.profiles");
if (environment != null && StringUtils.hasText(profiles)) {
return environment.acceptsProfiles(Profiles.of(profiles)) ? FOUND
: NOT_FOUND;
}
else {
return ABSTAIN;
}
});
yamlFactory.setResources(new ByteArrayResource(s.getBytes()));
return yamlFactory.getObject();
};
}
@Bean(name = "graviteeProperties")
public static Properties graviteeProperties() throws IOException {
LOGGER.info("Loading Gravitee Management configuration.");
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
String yamlConfiguration = System.getProperty(GRAVITEE_CONFIGURATION);
Resource yamlResource = new FileSystemResource(yamlConfiguration);
LOGGER.info("\tGravitee Management configuration loaded from {}", yamlResource.getURL().getPath());
yaml.setResources(yamlResource);
Properties properties = yaml.getObject();
LOGGER.info("Loading Gravitee Management configuration. DONE");
return properties;
}
@Override
public Properties read() {
final YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
try (InputStream in = inputStream) {
yaml.setResources(new InputStreamResource(in));
return yaml.getObject();
}
catch (IOException e) {
throw new IllegalStateException("Cannot load environment", e);
}
}
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
yamlPropertiesFactoryBean.setResources(resource.getResource());
Properties yamlProperties = yamlPropertiesFactoryBean.getObject();
return new PropertiesPropertySource(name, yamlProperties);
}
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource) throws IOException {
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
factory.setResources(encodedResource.getResource());
Properties properties = factory.getObject();
return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);
}
@Override
public Map<String, Object> resolve(String content) {
YamlPropertiesFactoryBean ymlFb = new YamlPropertiesFactoryBean();
ymlFb.setResources(new ByteArrayResource(content.getBytes(Charsets.UTF_8)));
ymlFb.afterPropertiesSet();
// Properties to map
Map<String, Object> map = new HashMap<>();
if (ymlFb.getObject() != null) {
ymlFb.getObject().forEach((k, v) -> map.put(String.valueOf(k), v));
}
return map;
}
public static Map<String, String> processValueType(KVDoc kvDoc) {
ValueType valueType = parseValueType(kvDoc.getValueType());
Properties properties = new Properties();
Map<String, String> kvMap = new HashMap<>();
try {
if (valueType == (ValueType.YAML) || valueType == (ValueType.YML)) {
YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
yamlFactory.setResources(new ByteArrayResource(kvDoc.getValue().getBytes()));
properties = yamlFactory.getObject();
} else if (valueType == (ValueType.PROPERTIES)) {
properties.load(new StringReader(kvDoc.getValue()));
} else if (valueType == (ValueType.TEXT) || valueType == (ValueType.STRING)) {
kvMap.put(kvDoc.getKey(), kvDoc.getValue());
return kvMap;
} else {
// ValueType.JSON
kvMap.put(kvDoc.getKey(), kvDoc.getValue());
return kvMap;
}
kvMap = toMap(kvDoc.getKey(), properties);
return kvMap;
} catch (Exception e) {
LOGGER.error("read config failed", e);
}
return Collections.emptyMap();
}
private Properties loadProperties(String name, Resource resource) throws IOException{
Properties properties = null;
if(name.contains("properties")){
properties = PropertiesLoaderUtils.loadProperties(resource);
}else{
YamlPropertiesFactoryBean bean = new YamlPropertiesFactoryBean();
bean.setResources(resource);
properties = bean.getObject();
}
return properties;
}
private static void contributeDefaults(Map<String, Object> defaults, Resource resource) {
if (resource.exists()) {
YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
yamlPropertiesFactoryBean.setResources(resource);
yamlPropertiesFactoryBean.afterPropertiesSet();
Properties p = yamlPropertiesFactoryBean.getObject();
for (Object k : p.keySet()) {
String key = k.toString();
defaults.put(key, p.get(key));
}
}
}
/**
* Load application.yml from classpath.
*/
private static Properties readProperties() {
try {
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
factory.setResources(new ClassPathResource("config/application.yml"));
return factory.getObject();
} catch (Exception e) {
log.error("Failed to read application.yml to get default profile");
}
return null;
}
private static void contributeDefaults(Map<String, Object> defaults, Resource resource) {
if (resource.exists()) {
YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
yamlPropertiesFactoryBean.setResources(resource);
yamlPropertiesFactoryBean.afterPropertiesSet();
Properties p = yamlPropertiesFactoryBean.getObject();
for (Object k : p.keySet()) {
String key = k.toString();
defaults.put(key, p.get(key));
}
}
}
protected Properties generateProperties(String value,
ConsulConfigProperties.Format format) {
final Properties props = new Properties();
if (format == PROPERTIES) {
try {
// Must use the ISO-8859-1 encoding because Properties.load(stream)
// expects it.
props.load(new ByteArrayInputStream(value.getBytes("ISO-8859-1")));
}
catch (IOException e) {
throw new IllegalArgumentException(
value + " can't be encoded using ISO-8859-1");
}
return props;
}
else if (format == YAML) {
final YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(
new ByteArrayResource(value.getBytes(Charset.forName("UTF-8"))));
return yaml.getObject();
}
return props;
}
/**
* Load application.yml from classpath.
*/
private static Properties readProperties() {
try {
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
factory.setResources(new ClassPathResource("config/application.yml"));
return factory.getObject();
} catch (Exception e) {
log.error("Failed to read application.yml to get default profile");
}
return null;
}
private void check(String yamlContent) {
YamlPropertiesFactoryBean yamlPropertiesFactoryBean = new YamlPropertiesFactoryBean();
yamlPropertiesFactoryBean.setResources(new ByteArrayResource(yamlContent.getBytes()));
Properties expected = yamlPropertiesFactoryBean.getObject();
Properties actual = parser.yamlToProperties(yamlContent);
assertTrue("expected: " + expected + " actual: " + actual, checkPropertiesEquals(expected, actual));
}
@Test
public void test2() {
String data = "zuihou:\n" +
" swagger:\n" +
" enabled: true\n" +
" title: 网关模块\n" +
" base-package: com.github.zuihou.zuul.controller\n" +
"\n" +
"zuul:\n" +
" retryable: false\n" +
" servlet-path: /\n" +
" ignored-services: \"*\"\n" +
" sensitive-headers:\n" +
" ratelimit:\n" +
" key-prefix: gate_rate\n" +
" enabled: true\n" +
" repository: REDIS\n" +
" behind-proxy: true\n" +
" default-policy:\n" +
" cycle-type: 1\n" +
" limit: 10\n" +
" refresh-interval: 60\n" +
" type:\n" +
" - APP\n" +
" - URL\n" +
" routes:\n" +
" authority:\n" +
" path: /authority/**\n" +
" serviceId: zuihou-authority-server\n" +
" file:\n" +
" path: /file/**\n" +
" serviceId: zuihou-file-server\n" +
" msgs:\n" +
" path: /msgs/**\n" +
" serviceId: zuihou-msgs-server\n" +
" order:\n" +
" path: /order/**\n" +
" serviceId: zuihou-order-server\n" +
" demo:\n" +
" path: /demo/**\n" +
" serviceId: zuihou-demo-server\n" +
"\n" +
"authentication:\n" +
" user:\n" +
" header-name: token\n" +
" pub-key: client/pub.key";
YamlPropertiesFactoryBean yamlFactory = new YamlPropertiesFactoryBean();
yamlFactory.setResources(new ByteArrayResource(data.getBytes()));
Properties object = yamlFactory.getObject();
System.out.println(object);
}
@Bean
public static YamlPropertiesFactoryBean yamlPropertiesFactoryBean() {
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("application.yml"));
return yaml;
}
@Bean
public static YamlPropertiesFactoryBean yamlPropertiesFactoryBean() {
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("application.yml"));
return yaml;
}
@Bean
public static YamlPropertiesFactoryBean yamlPropertiesFactoryBean() {
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("application.yml"));
return yaml;
}
@Bean
public static YamlPropertiesFactoryBean yamlPropertiesFactoryBean() {
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("application.yml"));
return yaml;
}