【问题标题】:ConfigurationProperties for String properties with multiple dots具有多个点的字符串属性的 ConfigurationProperties
【发布时间】:2021-12-28 00:27:30
【问题描述】:

我正在尝试修复我们公司自制框架中的一个错误。基本上,我们应该能够通过作为我们框架一部分的以下类将 EclipseLink 属性注入EntityManager

@ConfigurationProperties(prefix = "our.framework.eclipselink")
public class CustomEclipseLinkProperties {

    private Map<String, Object> properties;

    public Map<String, Object> getProperties() {
        return properties;
    }

    public void setProperties(Map<String, Object> properties) {
        this.properties = properties;
    }

    public String getBatchSize() {
        return (String) properties.get(PersistenceUnitProperties.BATCH_WRITING_SIZE);
    }

}

我们基于该框架构建的服务具有以下属性文件 (application.properties):

our.framework.eclipselink.properties.eclipselink.logging.level=FINEST
our.framework.eclipselink.properties.eclipselink.logging.level.cache=FINEST
our.framework.eclipselink.properties.eclipselink.logging.level.sql=FINEST
our.framework.eclipselink.properties.eclipselink.logging.parameters=true

our.framework.eclipselink.properties.eclipselink.jdbc.batch-writing.size=1000
our.framework.eclipselink.properties.eclipselink.jdbc.bind-parameters=true
our.framework.eclipselink.properties.eclipselink.jdbc.batch-writing=JDBC

our.framework.eclipselink.properties.eclipselink.jpa.uppercase-column-names=false
our.framework.eclipselink.properties.eclipselink.jpa.uppercase-columns=false

当我在CustomEclipseLinkProperties 被初始化后放置一个断点时,我可以看到getBatchSize() 返回null。如果我查看getProperties(),我确实看到检测到这些值,但它们被插入为LinkedHashMap

预期的行为是我们将获得一个使用整个后缀作为字符串键的Map,而不是在属性列表中获得基本上调用String#split()LinkedHashMap。这意味着对getBatchSize() 的调用将返回1000

我看过一些答案,例如this one,但它们似乎不够通用,我不喜欢。 @ConfigurationProperties注入时,有没有办法简单地将整个后缀作为键?否则,每当我们想要支持不同类型的属性时,似乎都需要干预。

【问题讨论】:

标签: java spring spring-boot


【解决方案1】:

如果我从Map&lt;String, Object&gt; 切换到Map&lt;String, String&gt;,那么“后缀作为键”是默认行为。

Object 值在我们的案例中实际上没有用,因此解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 2015-04-14
    • 2018-10-11
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多