0

我无法从命令行加载特定的 Spring 引导配置文件。

applciation.yml 文件内容如下,它位于我的应用程序的资源文件夹中。

server:
    port: 8787
spring:
  application:
    name: demo

spring:
  profiles: local_mysql
  datasource:
    url: jdbc:mysql://localhost:3306/demo?createDatabaseIfNotExist=true
    username: root
    password: root
    driverClassName: com.mysql.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
      dialect: org.hibernate.dialect.MySQLDialect
server:
    port: 8787

spring:
  profiles: development
  datasource:
    url: jdbc:mysql://localhost:3306/demo?createDatabaseIfNotExist=true
    username: admin
    password: admin
    driverClassName: com.mysql.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: update
      dialect: org.hibernate.dialect.MySQLDialect
server:
    port: 8788

执行mvn clean package 并运行应用程序后 java -jar -Dspring.profiles.active=local_mysql target\demo-1.0.0-SNAPSHOT.jar

应用程序忽略指定的配置文件,只是从 8080 开始,使用 H2 Db 而不是 mySQL。

4

2 回答 2

4

创建名为的单独文件application-local_mysql.yml并在该文件中具有local_mysql相关设置。对所有配置文件执行相同操作。application.yml具有所有配置文件共有的配置。

这些文件应该在适当的$CLASSPATH\config\位置。

然后运行您的应用程序。

java -jar -Dspring.profiles.active=local_mysql target\demo-1.0.0-SNAPSHOT.jar

参考:外部化配置

于 2015-08-25T16:15:48.883 回答
0

在我看来,最好为不同的配置文件创建许多 yml 文件(如@karthikeyan-vaithilingam 帖子中所述),但只是为了说明 - 您可以在 application.yml 中拥有多个配置文件的属性 - 这里 eureka 使用示例:

---
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
    metadataMap:
      # Each eureka instance need unique id. By default its hostname so we would have to use 1 server per service
      instanceId: PEER1_${spring.application.name}:${spring.application.instance_id:${random.value}}
---
spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
    metadataMap:
  # Each eureka instance need unique id. By default its hostname so we would have to use 1 server per service
      instanceId: PEER2_${spring.application.name}:${spring.application.instance_id:${random.value}}
于 2015-08-25T16:24:51.940 回答