1

Я хотел бы настроить 3 профиля в весенней загрузке: производство, разработка, тестирование с использованием внешнего файла конфигурации.Весенние профили загрузки с внешними свойствами

класс

Применение:

@SpringBootApplication 
public class Application { 

    public static void main(String[] args){ 
     SpringApplication.run(Application.class, args); 
    } 
} 

AppConfig класс:

@Configuration 
@PropertySources({ 
     @PropertySource("config/application.yml"), 
     @PropertySource(value = "file:${external.config}") 
}) 

@ConfigurationProperties 
public class AppConfig { 

} 

конфигурации/application.yml:

--- 
spring.profiles: production 
endpoints.enabled: false 
--- 
spring.profiles: development,test 
endpoints.enabled: true 
info.version: @[email protected] 
info.test: Test dev or test 
info.profile: ${spring.profiles.active} 
--- 

external.config: ${user.home}/.myapp/application.properties 

.myapp/application.properties:

spring.profiles.active=production 
info.version=5 

Выход пружинного загрузки привода/Информация

{ 
    version: "5", 
    test: "Test dev or test", 
    profile: "production" 
} 

Ожидаемый результат:

404 because of the endpoints.enabled: false 

весна-загрузочный привод/окр

ответ

1

Вы, вероятно, следует префиксом application.yml с classpath:

I В любом случае, почему бы просто не использовать профиль пружины для непосредственного конфигурирования конфигурации java? IMO, это было бы более чистым и сделало бы ваши свойства более безопасными по типу & ре-фактор, дружелюбный и не подверженный орфографическим ошибкам.

UPDATE:

Согласно документации, вы не можете загрузить файлы YML с @PropertySource аннотацию:

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-yaml-shortcomings

Так что, если вам нужно использовать файлы, вам нужно использовать простые файлы свойств. Вы можете использовать свойства свойств приложения свойств, указанные here.

В дополнение к application.properties файлы, профильные специфические свойства также могут быть определены с помощью именования APPLICATION- {Профиль} .properties.

+0

Привет, я также пробовал с classpath, он также работает без этого. $ {External.config} работает, кстати, версия: значение «5» поступает из внешней конфигурации. У меня также есть намного больше свойств во внешней конфигурации, например: свойства базы данных, которые он работает. –

+0

Ах, вы правы. Извиняюсь. Я вижу, вы можете оценить любую конфигурацию, уже зарегистрированную против env. Я уточню свой ответ. – leeor

+0

Я думаю, что использование classpath: может быть более безопасным/более предикативным в разных средах. – leeor

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