Зашифровать почтовый пароль в приложении Spring Boot + Spring Integration

Мое приложение разработано с использованием Spring boot, это приложение также читает почтовый ящик, эта часть чтения почты была реализована с использованием структуры Spring Integration.

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

Проблема: почтовый пароль отправляется как есть (без расшифровки). Итак, проверка подлинности почты не удалась.

Код включает в себя ВСЕ другие пароли, использующие ТОЛЬКО весеннюю загрузку, поэтому существует ТОЛЬКО один контекст приложения. Но только часть чтения почты была реализована с использованием среды Spring Integration. Эта конфигурация была выполнена с использованием файла xml, этот файл xml создает второй контекст приложения. Таким образом, расшифровка пароля НЕдоступна для этого второго контекста приложения.

Код шифрования, связанный с библиотекой Jasypt, существует внутри первого контекста приложения.

Будет ли преобразование приведенной ниже конфигурации Spring Integration на основе xml в конфигурацию на основе Java решить проблему? (Потому что будет только один контекст приложения). Если да, может ли кто-нибудь предоставить эквивалент конфигурации Java для приведенного ниже ( до версии Java 8)

<beans>
    <int:channel id="receiveChannel" /> 
    <mail:inbound-channel-adapter id="pop3ShouldDeleteTrue"
                                     store-uri="${mail.pop3.user.folder.uri}" 
                        channel="receiveChannel" 
                        should-delete-messages="false" 
                        should-mark-messages-as-read="true"
                        auto-startup="true"
                        java-mail-properties="javaMailProperties">

        <int:poller max-messages-per-poll="1" fixed-rate="${actor.email.polling.interval}"> 
        </int:poller>   
    </mail:inbound-channel-adapter>
    <context:property-placeholder location="file:./application-${env}.properties" local-override="true" />
    <util:properties id="javaMailProperties"> 
        <prop key="${mail.socketFactory}">false</prop> 
        <prop key="mail.debug">false</prop> 
        <prop key="mail.store.protocol">${mail.store.protocol}</prop>
    </util:properties> 
</beans>

person Sundararaj Govindasamy    schedule 14.03.2016    source источник


Ответы (1)


Почему это во втором контексте приложения?

Вы можете использовать @ImportResource в своем приложении Spring Boot, чтобы вывести xml в основной контекст загрузки.

См. здесь для примера.

Если вы хотите перейти на конфигурацию Java, в этом ответе есть пример.

person Gary Russell    schedule 14.03.2016