2015-04-16 3 views
0

Мы создаем большое веб-приложение в виде нескольких файлов WAR. Каждый файл WAR является приложением Spring Boot. Для разработки и тестирования мы можем запускать эти файлы WAR независимо. Но в производстве мы хотим запускать все файлы WAR вместе в одном экземпляре Jetty (9.x).Внешняя конфигурация для нескольких файлов Spring War в Jetty 9

Вопрос, который у нас есть, - это лучший способ справиться с внешней конфигурацией в этом сценарии? Каждый файл WAR имеет свой собственный набор файлов конфигурации (application.properties и другие), которые ему нужны. Как мы можем настроить, чтобы каждый файл WAR читал свои собственные файлы конфигурации и игнорировал остальные?

ответ

0

Вы можете использовать spring.config.name и spring.config.location, чтобы дать каждому приложению свое имя и/или местоположение для внешних файлов конфигурации. Я бы установил эти свойства в методе configure, который вы переопределили в своем подклассе SpringBootServletInitializer.

+0

Thanks; Я попробую. –

0

Другим вариантом, который может работать лучше, является использование аннотации @PropertySources для вашего класса @SpringBootApplication для каждого приложения Spring Boot.

Например, Затем вы можете переименовать application.properties для каждого приложения, например app1.properties, app2.properties и т. Д.

Затем вы можете запустить Jetty обеспечения в папке общей конфигурации -Dapplication.home = C:/apphome

И в каждом @SpringBootApplication, добавить @PropertySources аннотации, которая выглядит, как этот

@SpringBootApplication 
@PropertySources({ 
     @PropertySource("classpath:app1.properties"), 
     @PropertySource(value = "file:${application.home}/app1/app1.properties", ignoreResourceNotFound = true) 
}) 
public class App1Config { 
... 
} 

В разработке будут отображаться свойства приложения # .properties. Затем в процессе производства, когда вы определяете application.home, application.home/app #/app # .properties will override the one in the classpath

Смежные вопросы