он всегда загружает свойства с неправильного пути, когда я запускаю приложение Springboot - PullRequest
0 голосов
/ 29 сентября 2018

Справочная информация:

У нас есть многомодульный проект, который состоит из четырех модулей " Assembly ", " configservice ", " adminservice " и« portal ». И зависимости между модулями выглядят так: «configservice», «adminservice» и «portal» - все это зависимости от «assembly». Что «сборка» делает только для определения, какое приложение ("portal", "adminservice" и "configservice") для запуска.

Ситуация:

Когда я выбираю запуск portal , он всегда загружает bootstrap.yml из configservice, а не portal.И также он загружает другие ресурсы (например, свойство liquibase) из пути к классам configservice, а не из портала..
AssemblyApplication.java Класс записи .assembly, также единственный класс "Assembly" имеет:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
    HibernateJpaAutoConfiguration.class})
public class AssemblyApplication {

  private static final Logger logger = LoggerFactory.getLogger(AssemblyApplication.class);

  public static void main(String[] args) throws Exception {
    ConfigurableApplicationContext commonContext =
        new SpringApplicationBuilder(AssemblyApplication.class).web(false).run(args);
    commonContext.addApplicationListener(new ApplicationPidFileWriter());

    // Run configservice
    if (commonContext.getEnvironment().containsProperty("configservice")) {
      ConfigurableApplicationContext configContext =
          new SpringApplicationBuilder(ConfigServiceApplication.class).parent(commonContext)
              .sources(RefreshScope.class).run(args);
    }

    // Run adminservice
    if (commonContext.getEnvironment().containsProperty("adminservice")) {
      ConfigurableApplicationContext adminContext =
          new SpringApplicationBuilder(AdminServiceApplication.class).parent(commonContext)
              .sources(RefreshScope.class).run(args);
    }

    // Run portal
    if (commonContext.getEnvironment().containsProperty("portal")) {
      ConfigurableApplicationContext portalContext =
          new SpringApplicationBuilder(PortalApplication.class).parent(commonContext)
              .sources(RefreshScope.class).run(args);
    }
  }
}

Файловые структуры:

configservice:
  -configservice
    -src
      -main
        -java
        -resources
          -liquibase
            -changelog.xml
        -application.yml
        -bootstrap.yml

adminservice:
  -adminservice
    -src
      -main
        -java
        -resources
          -application.yml
          -bootstrap.yml

portal:
  -portal
    -src
      -main
        -java
        -resources
          -liquibase
            -changelog.xml
        -application.yml

Свойства содержимого

configservice's bootstrap.yml
endpoints:
  health:
    sensitive: false

management:
  security:
    enabled: false
  health:
    status:
      order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP

spring:
  datasource:
    continue-on-error: true
    platform: h2
  jpa:
    show-sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: none


liquibase:
  change-log: classpath:liquibase/changelog.xml
  user:
  password:
  url: 
${spring_datasource_url:jdbc:h2:~/.h2/default/configdb;AUTO_SERVER=TRUE}
  enabled: true
  drop-first: false
applicationservice.yml
spring:
  application:
    name: configservice
  profiles:
    active: ${active_profile}

server:
  port: ${config_port:8330}

logging:
  file: /opt/logs/configservice.log
application.yml
spring:
  application:
    name: portal
  profiles:
    active: ${active_profile}
  datasource:
    continue-on-error: true
    platform: h2
  jpa:
    show-sql: true
    properties:
      hibernate:
        dialect: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: none

server:
  port: 9080

logging:
  file: /opt/logs/100003173/portal.log

endpoints:
  health:
    sensitive: false
management:
  security:
    enabled: false
  health:
    status:
      order: DOWN, OUT_OF_SERVICE, UNKNOWN, UP

liquibase:
  change-log: classpath:liquibase/changelog.xml
  user:
  password:
  url: ${spring_datasource_url}
  enabled: true
  drop-first: false
портала

1 Ответ

0 голосов
/ 29 сентября 2018

configservice.jar (или любое другое имя, которому назван артефакт вашей сборки) является первым в пути к классам и побеждает.

Вы должны настроить свою конфигурацию или по-разному называть файлы свойств в каждом модуле.

Как использовать другое имя, которое вы можете найти здесь:

http://roufid.com/rename-spring-boot-application-properties/

...