2016-02-21 4 views
1

Я хочу интегрировать библиотеку Jasypt с механизмом свойств пружины.Обновление файла свойств при загрузке весеннего контекста

В примере учебник здесь: http://www.jasypt.org/spring31.html автор предположил, что пользователь выполнил шифрование вручную, а затем передал зашифрованное значение между ENC() заполнителями в файл конфигурации. Мне этого недостаточно.

Я хочу, чтобы достичь заданного сценария:

  1. Поместить эту строку в файл с Недвижимость Болгария Недвижимость:

    datasource.password=DEC(mysecretpassword) 
    
  2. Start приложения

  3. Spring Framework будет шифровать пароль (с использованием jasypt) и заменить вышеприведенную линию:

    datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm) 
    

При дополнительных запусках весна только расшифровывает зашифрованное значение (например, используя org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer), и файл не изменяется.

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

я могу установить пользовательские org.springframework.util.PropertiesPersister к моим PropertyPlaceholderConfigurer, хорошо, но я до сих пор не знаю, какой файл мне нужно обновить (в моем весеннем @Configuration может быть много мест свойства, некоторые свойства могут быть заместить значение из другого файла и т.д.).

Другими словами: мне нужно ввести логику (de | en) crytion AFTER, которая разрешает и объединяет ресурсы, но ПЕРЕД добавлением значений другим компонентам.

Благодарим за предоставление каких-либо советов, как решить эту проблему.

+0

ли вы попробовать [BeanFactoryPostProcessor] (https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiuyoXT9ojLAhUOco4KHa5PBIMQFggcMAA&url=https%3A%2F% 2Fdocs.spring.io% 2Fspring% 2Fdocs% 2Fcurrent% 2Fjavadoc-апи% 2Forg% 2Fspringframework% 2Fbeans% 2Ffactory% 2Fconfig% 2FBeanFactoryPostProcessor.html & USG = AFQjCNHeAVk4k3q6y10UpFgyvsDQeTAc0Q & Sig2 = KPFxtn8CI07GmFxroWOgaQ), что позволяет выполнять пользовательскую логику до любого создания компонента. –

ответ

0

Старая проблема, которую я решаю с решением, которое я нашел в джире, которого я не могу найти прямо сейчас. Во всяком случае, This - очень похожее решение. Таким образом, вы «скажите» fw, чтобы загрузить файл propertiesPlaceHolder перед загрузкой ваших источников данных.