Класс Spring @Configuration содержит методы @Bean, но как мне сначала выполнить execute init ()? - PullRequest
0 голосов
/ 27 ноября 2018

Я нахожусь на проекте Spring и имею уровень квалификации 1 со Spring.2 дня я читал и пытался заставить шифрование Jasypt работать с некоторым существующим кодом, но переданное значение является значением ENC (....), которое необходимо преобразовать.

Один проект, который яЯ смотрю на это самопроизвольный проект, использующий main(), тогда как один, на котором я работаю, является службой, которая вызывается и не запускается как другая.

В последний раз я просматривал этот пример Spring EnableEncryptableProperties с Jasypt , но через некоторое время я заметил, что он извлекает свои свойства с помощью вызова метода: environment.getRequiredProperty ("spring.datasource.username")

Метод извлекает из системных переменныхчто я не вижу, как имущие попадают в это.Ни одно из свойств, которые есть в моем файле свойств, отсутствует на уровне свойств системы.

Чего мне не хватает здесь, чтобы узнать, как обновить системные свойства с помощью файла application.properties?

Другой проект обновляет системные свойства и затем вызывает SpringApplication.run(Application.class, args), что неприменимо к этому другому проекту, поскольку это не тот же тип приложения.

Хотелось бы получить некоторые рекомендации.Пожалуйста, никаких умных замечаний о том, чтобы взять класс.Я делаю все возможное вне работы, но на этапе 4, а проект на этапе 321, пройдет некоторое время, прежде чем я доберусь туда.

1 Ответ

0 голосов
/ 27 ноября 2018

Если вы хотите выполнить некоторый код до фактического создания Spring, вы можете использовать свой собственный BeanFactoryPostprocessor .Вот пример с EnvironmentPostProcessor , который может быть полезен для вашей ситуации с зашифрованными свойствами: пример

Вы можете реализовать postProcessEnvironment в следующемпуть:

  • Получить все реквизиты из среды
  • Проверить, имеет ли значение свойства значение 'ENC ()'
  • Расшифровать и установить его значение обратно

Я считаю, что EncrytablePropertySource от jasypt-starter работает таким образом.

PS Лучше использовать подход по умолчанию с @EncrytablePropertySource, если это возможно, чем заново изобретать колесо сПользовательский EnvironmentPostProcessor.

...