我正在从事Spring项目,并且具有Spring的1级技能。 我已经阅读了两天,并试图使Jasypt加密与某些现有代码一起使用,但是传递的值是需要转换的ENC(....)值。
我要看的一个项目是一个使用main()
的自运行项目,而我所在的项目是一个被调用但不能与另一个运行的服务。
我上次查看此示例Spring EnableEncryptableProperties with Jasypt,但过了一会儿我注意到它正在使用方法调用来提取其属性: environment.getRequiredProperty(“ spring.datasource.username”)
该方法是从System变量中提取的,我看不出属性如何进入其中。系统属性级别中没有我的属性文件中的所有属性。
关于如何使用application.properties
文件中的内容更新系统属性,我这里想念什么?
另一个项目正在更新系统属性,然后调用SpringApplication.run(Application.class, args)
,这不适用于另一个项目,因为它不是同一类型的应用程序。
会喜欢一些指导。请不要聪明地讲课。我正在做我可以做的事,但是在步骤4,而项目在步骤321,要到那儿还要花一点时间。
答案 0 :(得分:0)
如果要在实际创建Spring之前执行一些代码,可以使用实现自定义的 BeanFactoryPostprocessor 。以下是 EnvironmentPostProcessor 的示例,该示例对于使用加密属性的情况可能非常有用: example
您可以通过以下方式实现 postProcessEnvironment :
我相信jasypt-starter的EncrytablePropertySource可以这样工作。
P。 S。如果可能,最好将默认方法与@EncrytablePropertySource一起使用,而不是使用自定义EnvironmentPostProcessor重新发明轮子。