我有一些代码可以在 2 之前的 spring boot 上正常工作,我发现很难将其转换为与 spring boot 2 一起使用。有人可以帮忙吗?public static MutablePropertySources buildPropertySources(String propertyFile, String profile){ try { Properties properties = new Properties(); YamlPropertySourceLoader loader = new YamlPropertySourceLoader(); // load common properties PropertySource<?> applicationYamlPropertySource = loader.load("properties", new ClassPathResource(propertyFile), null); Map<String, Object> source = ((MapPropertySource) applicationYamlPropertySource).getSource(); properties.putAll(source); // load profile properties if (null != profile) { applicationYamlPropertySource = loader.load("properties", new ClassPathResource(propertyFile), profile); if (null != applicationYamlPropertySource) { source = ((MapPropertySource) applicationYamlPropertySource).getSource(); properties.putAll(source); } } propertySources = new MutablePropertySources(); propertySources.addLast(new PropertiesPropertySource("apis", properties)); } catch (Exception e) { log.error("{} file cannot be found.", propertyFile); return null; }}public static <T> void handleConfigurationProperties(T bean, MutablePropertySources propertySources) throws BindException{ ConfigurationProperties configurationProperties = bean.getClass().getAnnotation(ConfigurationProperties.class); if (null != configurationProperties && null != propertySources) { String prefix = configurationProperties.prefix(); String value = configurationProperties.value(); if (null == value || value.isEmpty()) { value = prefix; }PropertiesConfigurationFactory不再存在并且YamlPropertySourceLoaderload 方法不再接受 3 个参数。(响应也不相同,当我尝试调用新方法时,响应对象被包装而不是给我直接字符串/整数等......)
3 回答
眼眸繁星
TA贡献1873条经验 获得超9个赞
该PropertiesConfigurationFactory应改为Binder类。
粘合剂类
示例代码:-
ConfigurationPropertySource source = new MapConfigurationPropertySource(
loadProperties(resource));
Binder binder = new Binder(source);
return binder.bind("initializr", InitializrProperties.class).get();
我们还使用 PropertiesConfigurationFactory 将 POJO 绑定到 Environment 的前缀。在 2.0 中,引入了全新的 Binder API,更加灵活易用。我们需要 10 行代码的绑定可以减少到 3 行简单的代码。
YamlPropertySourceLoader:-
是的,这个类在版本 2 中已经改变了。它不再接受第三个参数profile。方法签名已更改为 returnList<PropertySource<?>>而不是PropertySource<?>。如果您期待单一来源,请从列表中获取第一个。
将资源加载到一个或多个属性源中。实现可以返回包含单个源的列表,或者在多文档格式(例如 yaml)的情况下返回资源中每个文档的源。
添加回答
举报
0/150
提交
取消