【发布时间】:2022-01-09 05:20:29
【问题描述】:
我使用 WAS Liberty Server 容器,它提供 server.xml 和 server.env 文件来配置许多东西,除了配置 URL、用户名、密码等 DataSource 属性。
出于安全原因,生产 Liberty 服务器的开发人员不知道这些属性。但是,开发人员使用相同的 server.xml/server.evn 文件,但具有不同的 DataSource 属性,因此他们可以完成工作。
所以,我可能有两个 server.env 文件,例如:
PRODUCTION server.env: dataSourceUrl="server-A-URL" (this URL is not known to developers)
DEVELOPMENT server.env: dataSourceUrl="server-B-URL" (this URL is known to developers)
,那么dataSourceUrl在生产和开发中的server.xml文件中使用,以设置相应的url。
所以,server.xml/server.env 文件的结构对于开发者和生产者来说是相同的,只是DataSource url、用户名、密码不同。这样,开发人员可以使用他们自己的 DataSource 属性工作,一旦准备好部署他们的应用程序,它就会交给其他团队,然后他们只需将 DataSource 属性更改为生产值并将应用程序部署到生产服务器。
使用 Springboot JPA,我知道我们可以使用 application.properties 文件来设置这些 DataSource 值。但是,我们希望能够将这些设置为 server.env 文件中的值。基本上在 application.properties 文件中有这样的东西:
spring.datasource.url=dataSourceUrl //dataSourceUrl is set in server.env
,然后可以使用@Value 注入在 Java 代码中使用该值,例如:
public class MyClass {
@Value("${spring.datasource.url}")
String dsUrl;
...
}
我一直在阅读有关外部化属性的信息,但我无法弄清楚如何做到这一点
【问题讨论】:
标签: spring-boot spring-data-jpa websphere-liberty open-liberty