Spring boot не загружает определенный профиль

Я не могу загрузить определенный загрузочный профиль 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.


person Overlord    schedule 25.08.2015    source источник


Ответы (2)


Создайте отдельный файл с именем application-local_mysql.yml и сохраните в нем настройки, связанные с local_mysql. Сделайте то же самое для всех профилей. В application.yml есть общие для всех профилей конфигурации.

Файлы должны находиться в $CLASSPATH\config\ месте.

Затем запустите ваше приложение.

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

Ссылка: Внешняя конфигурация

person Karthikeyan Vaithilingam    schedule 25.08.2015

На мой взгляд, лучше создать много файлов 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}}
person freakman    schedule 25.08.2015