【问题标题】:Is there a way to trim all the values read using PropertyPlaceholder有没有办法修剪使用 PropertyPlaceholder 读取的所有值
【发布时间】:2015-06-17 12:17:38
【问题描述】:

我正在使用 PropertyPlaceholderConfigurer 在我的应用程序中加载一个属性文件,我从中读取数据库详细信息并在数据源中动态替换它,如下所示。

<bean id="configJdbcProperties"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>classpath:config.properties
        </value>
    </property>
</bean>

<bean id="mysqlSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUrl" value="${mysql.jdbc.url}" />
    <property name="user" value="${mysql.jdbc.username}" />
    <property name="password" value="${mysql.jdbc.password}" /> </bean>

上面的代码可以正常工作。 问题: 如果上述属性值中有空格会导致应用失败。

Ex: mysql.jdbc.username= root

现在在上面的示例中,用户名 root 之前有一个空格,因此我的应用程序无法连接到 DB。 我接受这是人为错误,但在 spring 中有没有办法自动处理它或通过在 spring 中启用一些属性。

【问题讨论】:

    标签: java spring


    【解决方案1】:

    PropertyPlaceholderConfigurer 没有直接支持修剪值,因为它假定您的属性源是正确的。不过,介绍起来还是很简单的。没有什么能阻止您使用自定义版本的课程。

    public class MyPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
    
        @Override
        protected String resolvePlaceholder(String placeholder, Properties props) {
            String value = super.resolvePlaceholder(placeholder, props);
            return value == null ? null : value.trim();
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      其实我不知道有这样的机制。但这似乎是Automatically Trim Trailing White Space for properties in Props file loaded into Spring的复制品

      还有一个问题在 Spring Jira 中仍处于“未解决”状态。

      https://jira.spring.io/browse/SPR-5839

      希望我能帮到你。

      BR

      【讨论】:

        猜你喜欢
        • 2016-01-07
        • 2016-03-27
        • 2017-06-23
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        • 2022-11-30
        相关资源
        最近更新 更多