java - 如何在注入(inject) bean 之前修改 Spring 解析的属性

标签 java spring spring-boot

我需要在 Spring 应用程序中提供对外部属性解密的支持。我计划使用来自 spring-cloud-config 的机制,在 Environment 准备好并添加具有更高优先级的解密属性后触发。不幸的是,它严重依赖于发出 ApplicationEnvironmentPreparedEvent 的 Spring Boot 引导机制。查看 Spring Framework 代码,环境和上下文创建是高度耦合的,很难在它们之间运行我自己的代码。我正在使用的应用程序是一个大型的多模块“标准”Spring MVC 应用程序,我现在不想将它转换为 Spring boot 应用程序。

问题:

在 Spring(不是 Spring Boot)应用程序中,如何在环境创建之后和上下文创建之前(在将属性注入(inject)到“正常”bean 之前修改属性)执行我的代码?

替代问题:

是否有任何其他方法可以控制注入(inject) bean 的属性(用于修改最初由 Spring 解析的值)?

最佳答案

您可以创建一个自定义的 ApplicationContextInitializer,它将解密或任何内容添加到您选择的 PropertySource

我们在我目前开发的一个应用程序中做了类似的事情。从文件和数据库加载一些自定义属性后,我们将所有可用的 PropertySource 包装在 EncryptablePropertySource 中,因为多个属性已加密(为此我们使用 Jasypt 库)。

关于java - 如何在注入(inject) bean 之前修改 Spring 解析的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26928735/

相关文章:

java - setItems() 之后无法看到表格 View 中单元格中的数据

java - 使用 Jython 访问 Java 中 Python 类的公共(public)属性

Spring Mongodb 查询(如果 id 不为空)

spring - 找不到类[org.springframework.orm.hibernate5.LocalSessionFactoryBean]

Spring Boot HTTP2 服务器推送

java - Spring 安全: How to Return 503 Service Unavailable?

java - += 带有字符串和转换字符的运算符

java - 对 mysql 驱动程序使用 hikari cp 时 JNDI 查找失败

java - org.springframework.expression.spel.SpelEvaluationException

file-upload - spring boot文件上传在发生MultipartException时执行两次