我想从 application.properties 外包我的数据库连接和凭据,并在我的 application.properties 中访问它们。
我创建了一个名为 env.properties 的文件。
DB_USER=test
DB_PASSWORD=test
DB_URL=jdbc:mysql://localhost:3306/testDB
然后将文件导入到我的 application.properties 中并尝试访问这些值。
spring.application.name=CampusFlow
spring.config.import=optional:env.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=Environment#getProperty("DB_URL")
spring.datasource.username=Environment#getProperty("DB_USER")
spring.datasource.password=Environment#getProperty("DB_PASSWORD")
像这样,我无法访问变量的值。我如何访问这些值?
您必须使用 ${} 表示法。
对我有用的例子:
application.yml
spring:
config:
import:
env.properties
myvar: ${TEST}
env.属性
TEST=myvar
问得好。最简单的方法就是像这样替换它们:
spring.application.name=CampusFlow
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
但是,这不会从 env.properties 中获取,而是从环境变量中获取。实际上,它将按照以下特定顺序从 15 个位置获取:https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config
此外, spring.config.import 属性用于 Spring Cloud 配置服务器,它可以完全执行您想象的操作,但这需要维护/托管另一个应用程序等。所以我不想推荐它。
如果您想从文件中“注入”它们,可以推荐一个简单的替代方案,那就是使用 SPRING_APPLICATION_JSON (作为环境变量、jvm 参数或 spring 属性)并将内容以 JSON 格式放入,像这样的东西:
{
"DB_USER": "test",
"DB_PASSWORD": "test",
"DB_URL": "jdbc:mysql://localhost:3306/testDB"
}
但是,在任何有意义的环境中,您都可以以安全的方式将变量注入到容器/运行时,并且很可能您不必执行部分文件配置,只需使用上面提到的占位符配置和注入的值即可。