Spring Boot + Spring JPA如何从WAS Liberty服务器容器获取数据源属性
实现方案
方法1:直接读取Liberty注入的环境变量(推荐,无需额外配置)
Liberty的server.env中定义的所有键值对,会在服务启动时自动作为进程环境变量加载到JVM中,Spring Boot默认优先从进程环境变量读取配置,你只需要修改application.properties中的配置为占位符形式即可:
spring.datasource.url=${dataSourceUrl} spring.datasource.username=${dataSourceUsername} spring.datasource.password=${dataSourcePassword}
你的Java代码不需要做任何修改,直接用原有的@Value("${spring.datasource.url}")就能正常注入值。
如果出现读取不到的情况,可尝试将server.env中的变量名改为全大写下划线分隔格式(符合多数系统环境变量的命名规范),比如将dataSourceUrl改为DATA_SOURCE_URL,对应修改application.properties中的占位符为${DATA_SOURCE_URL}即可。
方法2:显式导入server.env文件(适配开发环境本地调试场景)
如果你开发环境需要直接把server.env放在项目资源目录下调试,可以在application.properties中添加导入配置:
# optional标识表示找不到该文件时不报错,生产环境直接从Liberty环境变量读取即可 spring.config.import=optional:classpath:server.env[.properties]
添加后Spring Boot会自动解析server.env的键值对作为配置属性,直接和方法1一样用占位符引用即可。
注意事项
- 开发环境的
server.env放在src/main/resources下即可,注意不要打包到生产部署的war/jar包中,生产环境的server.env由运维团队直接放在Liberty服务器的配置目录下,变量值会自动注入 - 如
server.env中的属性值包含特殊字符,需要用双引号包裹,避免解析异常
内容的提问来源于stack exchange,提问作者pixel
相关产品推荐
相关产品推荐

