spring boot 2 属性配置

我有一些代码可以在 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 个参数。


(响应也不相同,当我尝试调用新方法时,响应对象被包装而不是给我直接字符串/整数等......)


慕森王
浏览 164回答 3
3回答

眼眸繁星

该PropertiesConfigurationFactory应改为Binder类。粘合剂类示例代码:-ConfigurationPropertySource source = new MapConfigurationPropertySource(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 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)的情况下返回资源中每个文档的源。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java