2015-06-17 3 views
1

Я использую PropertyPlaceholderConfigurer для загрузки файла свойств в своем приложении из того, что я читаю данные базы данных и динамически заменяю его в источнике данных, как показано ниже.Есть ли способ обрезать все значения, считанные с использованием PropertyPlaceholder

<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, из-за которого мое приложение не может подключиться к БД. Я принимаю, что это человеческая ошибка, но есть весной, чтобы справиться с ней автоматически или путем включения некоторых свойств весной.

ответ

0

Фактически я не осведомлен о таком механизме. Но это, кажется, дубликат Automatically Trim Trailing White Space for properties in Props file loaded into Spring

Также есть проблема, которая по-прежнему находится в статусе «Неразрешенная» в весенней Джире.

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

Надеется, что я мог бы помочь вам.

BR

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(); 
    } 

} 
+0

спасибо, что это звучит хорошо. – Krishna

Смежные вопросы