所以我的application.properties看起来像:
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=mydb
spring.datasource.username=user
spring.datasource.password=123456
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2012Dialect
我不希望其他人在进入我的application.properties文件时能够看到我的用户名和密码。
是否有其他方法可以将价值推向云代工厂?像manifest.yml?
之类的东西尝试创建manifest.yml
我尝试制作一个清单文件,以便将其与我在云代工厂的应用程序绑定。
VCAP_SERVICES =
{
"oraclesql": [
{
"name": "OrcaleDb",
"label": "oraclesql",
"tags": [
"oracledb",
"oracle",
"relational"
],
"plan": "free",
"credentials": {
"uri": "jdbc:sqlserver://localhost:1433;databaseName=mydb",
"username": "user",
"password": "123456"
}
}
]
}
创建了application.yml
//this works
spring:
application:
name: tester
datasource:
driverClassName: jdbc:sqlserver://localhost:1433;databaseName=mydb
username: user
password: 123456
initialize: false
jpa:
databasePlatform: org.hiberate.dialect.Oracle10gDialect
答案 0 :(得分:2)
是和否。不幸的是,manifest.yml
并不像那样。该文件提供将用于cf push
的设置。它与应用程序无关,对Spring,Java,您的编程语言或您选择的应用程序框架一无所知。因此,它无法更改application.properties文件或其他特定于框架的配置。
幸运的是,有许多方法可以配置Spring Boot(参见here),其中一种方法是通过环境变量。幸运的是,您可以通过manifest.yml
设置环境变量。因此,如果在manifest.yml
中设置适当的环境变量,则可以配置应用程序。
供参考,以下是在manifest.yml
中设置env变量的说明。
https://docs.cloudfoundry.org/devguide/deploy-apps/manifest.html#env-block
看起来大致如下:
---
...
env:
ENV_1: val_1
ENV_2: val_2
Spring Boot将使用解释here的规则将环境变量映射到属性。一个基本示例是SPRING_DATASOURCE_USERNAME
映射到application.properties中的spring.datasource.username
。
答案 1 :(得分:0)
您真正想要做的是将您的数据库连接作为云代工service,而不是在application.properties
中定义。正如丹尼尔的回答所示,Spring可以获取ENV变量,但在清单中设置连接细节并不是惯用的方法。
通过提供服务,连接详细信息在绑定到应用程序时存储在VCAP_SERVICES
变量中 - spring可以从那里读取。 spring-music应用程序显示了这样做的典型方式。