Чтение значения из файла в файл applicationContext.xml - PullRequest
0 голосов
/ 22 октября 2019

У меня есть веб-приложение на основе Spring, и в моем XML-файле контекста приложения я определил bean-компонент, который имеет все параметры для подключения к базе данных. Как часть этого компонента, для одного из параметров у меня есть ключ пароля, как показано в примере ниже, и я хотел, чтобы значение было получено из файла / vault / password. Этот / хранилище / пароль не является частью проекта / приложения. Этот / Vault / пароль будет там на хост-машине по умолчанию.

Каков синтаксис в определении bean-компонента applicationContext.xml для чтения значения из файла вне контекста приложения.

<bean class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close" id="dataSource">
    <property name="url" value="jdbc:postgresql://postgres:5432/" />
    <property name="username" value="postgres" />
    <property name="password" value="/vault/password" />
</bean>

1 Ответ

1 голос
/ 22 октября 2019

Что-то вроде этого, вероятно, является лучшим выбором:

Как правильно переопределить BasicDataSource для Spring и Hibernate

ПРОБЛЕМА:

Теперь мне нужно предоставить пользовательский источник данных на основе серверной среды (не конфигурации), для которого мне нужно вычислить поля driverClassName и url на основе некоторых условий.

РЕШЕНИЕ:

Создать фабрику (так как вам нужно настроить только фазу создания объекта, вам не нужно контролировать весь срок его существования).

 public class MyDataSourceFactory {
    public DataSource createDataSource() {
        BasicDataSource target = new BasicDataSource();
        if (condition) {
            target.setDriverClassName("com.mysql.jdbc.Driver");                
            target.setUrl("jdbc:mysql://localhost/test?relaxAutoCommit=true"); 
        } else { ... }
        return target;
    }
}

В вашем случае, ваша настройка будет делать некоторые I /O установить target.password.

...