我有一个带有环境变量的外部属性源(比如一个. properties文件),如下所示:
MY_PROP1=1A
MY_PROPS_PROP1=1B
MY_PROPOBJ_PROP1=1C
我想用这些初始化一个< code > @ configuration properties :
@ConfigurationProperties("my")
@Setter
@Getter
class MyProperties {
private String prop1;
private Props props = new Props();
private PropsObj propsObj = new PropsObj();
@Setter
@Getter
class Props {
private String prop1;
}
@Setter
@Getter
class PropsObj {
private String prop1;
}
}
当我在应用程序开始时将这些设置为环境变量时,一切都很好。但是,当我在EnvironmentPostProcessor中使用自定义
SystemEnvironment PropertySource
处理这些对象时,组合对象
prop1的属性未解析(值为
null
):
class MyEnvPostProcessor implements EnvironmentPostProcessor {
@Override
public void postProcessEnvironment(ConfigurableEnvironment env, SpringApplication app) {
env.getPropertySources().addLast(
new SystemEnvironmentPropertySource(
"myPropertySource1",
// simplified, the map will be filled from a properties file etc:
Map.of("MY_PROP1", "1A", "MY_PROPS_PROP1", "1B", "MY_PROPOBJ_PROP1", "1C")));
}
}
为什么在这种情况下,放松绑定不起作用?
我用的是Spring Boot 2.2.2.RELEASE
问题在于Spring用来解析属性名的映射。对于环境变量,必须使用< code > SystemEnvironmentPropertyMapper 才能按预期工作。
此映射器将属性名称映射到可能的候选项中:< code > MY _ probj _ PROP1 ,< code>MY_PROP_OBJ_PROP1,< code>my.prop-obj.prop1,而默认映射器仅生成< code>my.prop-obj.prop1。由于在您的自html" target="_blank">定义属性源中找不到< code>my.prop-obj.prop1,因此不会解析该值。
要提示Spring为环境属性使用正确的映射器,属性源名称必须分别以-systemEnvironment
结尾。使用StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME
。按如下方式编辑代码:
environment.getPropertySources().addAfter(
StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME,
new SystemEnvironmentPropertySource(
"myPropertySource-" + StandardEnvironment.SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME,
Map.of("MY_PROPOBJ_PROP1", "MyValue1")));
我想通过使用@ConfigurationProperties注释将我的Application.Properties自动绑定到一个类中。首先,我尝试了@value注释,并能够将属性值注入类变量。但是,@ConfigurationProperties没有将属性注入到值中。 我的应用程序.属性: application.java ConfigBinder.java 输出: 这样的执行到底出了什么问题?
我感兴趣的是创建一个或多个自定义属性源加载器,并在我的应用程序中使用那些带有的属性源。 例如,我想开发一个属性源加载器,它能够加载XML文件并将其转换成一组属性,这些属性可以注入到我的< code>@Configuration注释类中。 是否有任何此类基于 XML 的属性源加载程序公开可用?如果没有,那么一旦我实现了它,我将如何将其提供给我的应用程序? 谢谢。
Spring Boot支持用于的Kotlin
本文向大家介绍aurelia 创建具有可绑定属性的自定义元素,包括了aurelia 创建具有可绑定属性的自定义元素的使用技巧和注意事项,需要的朋友参考一下 示例 创建具有可绑定属性的自定义元素非常简单。如果要创建一个接受一个或多个插件可以使用的值的元素,则需要使用@bindable装饰器和语法。 在下面,我们正在创建一个自定义元素,该元素接受一系列水果并显示它们。 示例: my-element.j
我们正在使用Spring数据,并试图创建一个带有子查询的自定义查询,结果投影有一个数组和其他属性,我们的问题是子查询数组。 预测如下:
问题内容: 我正在使用JavaScriptSerializer反序列化json数据。一切工作都很好,但是我的问题是,json数据中的一个属性被命名为“ base”,所以我无法在C#代码中创建这样的属性。我发现我可以手动将值映射到构造函数中的属性,但是问题是,我的DTO具有200个属性,因此我不想手动进行此操作,而是希望找到任何其他解决方案。我也尝试使用注释,但这是: 并没有帮助我,每次将baseV