繁体   English   中英

Spring @Configuration类包含@Bean方法,但是如何首先执行init()?

[英]Spring @Configuration class contains @Bean methods but how can I get execute init() first?

我在一个Spring项目上,并且具有Spring的1级技能。 我已经阅读了2天,并尝试使Jasypt加密与某些现有代码一起使用,但是传递的值是需要转换的ENC(....)值。

我要看的一个项目是一个使用main()的自运行项目,而我所在的项目是一个被调用且不会像另一个项目那样运行的服务。

我上次使用Jasypt查看此示例Spring EnableEncryptableProperties,但过了一会儿我注意到它正在使用方法调用来拉动其属性:environment.getRequiredProperty(“ spring.datasource.username”)

该方法是从System变量中提取的,我看不出属性如何进入其中。 系统属性级别中没有我的属性文件中的所有属性。

关于如何使用application.properties文件中的内容更新系统属性,我这里缺少什么?

另一个项目正在更新System属性,然后调用SpringApplication.run(Application.class, args) ,该项目不适用于该另一个项目,因为它不是同一类型的应用程序。

希望有一些指导。 请不要聪明地讲课。 我正在尽我所能去做,但在步骤4,而项目在步骤321,要到那儿还需要一段时间。

如果要在实际创建Spring之前执行一些代码,可以使用实现自定义BeanFactoryPostprocessor 这是EnvironmentPostProcessor的示例,对于您使用加密属性的情况可能很有用: example

您可以通过以下方式实现postProcessEnvironment

  • 从环境中获取所有道具
  • 检查属性值是否具有“ ENC()”
  • 解密并重新设置其值

我相信jasypt-starter的EncrytablePropertySource可以这种方式工作。

PS最好将默认方法与@EncrytablePropertySource一起使用,而不是使用自定义EnvironmentPostProcessor重新发明轮子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM