it-swarm.com.ru

Настройка активного профиля по умолчанию в Spring-boot

Я хочу, чтобы мой активный профиль по умолчанию был production, если -Dspring.profiles.active не установлен.

Я попробовал следующее в своем application.properties, но это не сработало:

spring.profiles.default=production

Spring-boot версия = 1.3.5. ВЫПУСК

26
DarVar

Здесь вы устанавливаете значение по умолчанию default profile (профиль, который используется для любого компонента, если вы не указали аннотацию @Profile) равным production.

Что вам действительно нужно сделать, так это установить профиль по умолчанию active , что делается так:

spring.profiles.active=production
45
PaulNUK

добавить --spring.profiles.active=production

Пример:

Java -jar file.jar --spring.profiles.active=production
7
Jaya Naresh

Поместите это в App.Java:

public static void main(String[] args) throws UnknownHostException {
    SpringApplication app = new SpringApplication(App.class);
    SimpleCommandLinePropertySource source = new SimpleCommandLinePropertySource(args);
    if (!source.containsProperty("spring.profiles.active") &&
            !System.getenv().containsKey("SPRING_PROFILES_ACTIVE")) {

        app.setAdditionalProfiles("production");
    }
    ...
}

Вот как это делается в JHipster

6
Tom Van Rossom

Я делаю это так

    System.setProperty("spring.profiles.default", "dev");

в самом начале main(...)

6
scorpp

Если вы используете Maven, я бы сделал что-то вроде этого:

Быть производство ваш профиль по умолчанию:

<properties>
    <activeProfile>production</activeProfile>
</properties>

И как пример других профилей:

<profiles>
    <!--Your default profile... selected if none specified-->
    <profile>
        <id>production</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <activeProfile>production</activeProfile>
        </properties>
    </profile>

    <!--Profile 2-->
    <profile>
        <id>development</id>
        <properties>
            <activeProfile>development</activeProfile>
        </properties>
    </profile>

    <!--Profile 3-->
    <profile>
        <id>otherprofile</id>
        <properties>
            <activeProfile>otherprofile</activeProfile>
        </properties>
    </profile>
<profiles>

В ваших application.properties вы должны будете установить:

[email protected]@

Это работает для меня каждый раз, надеюсь, это решит вашу проблему.

5
alpez

Прежде всего, из приведенного ниже решения необходимо понять, что всегда весенняя загрузка будет читать application.propertiesфайл. Таким образом, файлы профиля другого только будут дополнять и заменять свойства, определенные ранее.

Учитывая следующие файлы:

application.properties
application-qa.properties
application-prod.properties

1) Очень важно application.properties и только этот файл должны иметь следующую строку:

[email protected]@

2) Измените то, что вы хотите в файлах конфигурации QA и PROD, чтобы увидеть разницу между средами.

3) В командной строке запустите приложение весенней загрузки с одним из следующих параметров:

Приложение запустится с файлом по умолчанию application.properties:

mvn spring-boot:run

Он загрузит файл по умолчанию application.properties и после файла application-qa.properties, заменив и/или дополнив конфигурацию по умолчанию:

mvn spring-boot:run -Dspring.profiles.active=qa

То же самое здесь, но с производственной средой вместо QA:

mvn spring-boot:run -Dspring.profiles.active=prod
2
Rafael S. Fijalkowski

В настоящее время используется Maven + Spring Boot. Наше решение было следующим:

application.properties

#spring.profiles.active= # comment_out or remove

securityConfig.Java

@Value(${spring.profiles.active:[default_profile_name]}")
private String ACTIVE_PROFILE_NAME;

Кредит начинается с MartinMlima . Подобный ответ предоставлен здесь:

Как вы получаете текущий активный/по умолчанию профиль среды программно в Spring?

1
user1653042

В AWS LAMBDA:

Для $ sam local вы добавляете в YML-файл шаблона sam следующую строку:

Resources:
   FunctionName:
       Properties:
           Environment:
               Variables:
                  SPRING_PROFILES_ACTIVE: local

Но в Консоли AWS: В ваших переменных Lambda Environment просто добавьте:

КЛЮЧ: Java_TOOL_OPTIONS ЗНАЧЕНИЕ: -Dspring.profiles.active=dev 

 enter image description here

0
Jay