Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring boot и Profile / 9 сообщений из 9, страница 1 из 1
24.05.2020, 18:50
    #39961387
hck1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
Spring boot 2, в мавене пытаюсь поставить dev дефолтным профилем
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <spring.profiles.active>dev</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <spring.profiles.active>prod</spring.profiles.active>
            </properties>
        </profile>
    </profiles>



дальше запускаю локально юнит тесты и вижу что реально профиль local выставляется
Код: java
1.
2.
        System.out.println("Active profiles: " +
                Arrays.toString(environment.getActiveProfiles())) ;


т.е. первый вопрос почему local, а не dev ?
второй вопрос почему шедулер для профиля local запускает метод отмеченный @Profile("prod") ?
Код: java
1.
2.
    @Profile("prod")
    @Scheduled(cron = "0 */5 * * * *")


я ожидал, что только с профилем prod будет запускаться.
...
Рейтинг: 0 / 0
25.05.2020, 14:50
    #39961720
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
Откуда уверенность, что тесты должны брать профиль из переменных окружения? @ActiveProfiles почему не подходит?
@Profile на сколько я помню, работает на уровне бинов. Т.е включает/выключает весь бин, а не метод
...
Рейтинг: 0 / 0
25.05.2020, 18:45
    #39961844
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
hck1,

Я бы скорее уточнил - с чего вы взяли что профили мавена хоть как-то связаны с профилями спринга?
Как вариант: включить https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html и добавить в application.properties файл что-то типа spring.profiles.active=${spring.profiles.active}
...
Рейтинг: 0 / 0
25.05.2020, 18:52
    #39961847
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
Он в профиле выставляет properties и ждет, что в тестах они подхватятся. Логика в этом какая-то есть, но судя по всему, в тестах это не так
...
Рейтинг: 0 / 0
25.05.2020, 18:53
    #39961849
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
SpringMan
Он в профиле выставляет properties и ждет что в тестах они подхватятся. Логика в этом какая-то есть, но судя по всему, в тестах это не так


Он выставляет properties проекта мавена. Как о них должен узнать spring? Maven же не выставляет их в качестве переменных окружения.
...
Рейтинг: 0 / 0
25.05.2020, 18:56
    #39961852
Lelouch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
Lelouch
hck1,

Я бы скорее уточнил - с чего вы взяли что профили мавена хоть как-то связаны с профилями спринга?
Как вариант: включить https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html и добавить в application.properties файл что-то типа spring.profiles.active=${spring.profiles.active}

Более логичный вариант:
https://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html
...
Рейтинг: 0 / 0
25.05.2020, 19:09
    #39961860
SpringMan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
Lelouch

Он выставляет properties проекта мавена. Как о них должен узнать spring? Maven же не выставляет их в качестве переменных окружения.

Тупанул я, подумал, что это доп. переменные окружения. А это действительно простые maven-овские properties
...
Рейтинг: 0 / 0
26.05.2020, 08:24
    #39961996
hck1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
SpringMan
Откуда уверенность, что тесты должны брать профиль из переменных окружения? @ActiveProfiles почему не подходит?
@Profile на сколько я помню, работает на уровне бинов. Т.е включает/выключает весь бин, а не метод


да, забыл упомянуть что еще в application.properties прописано spring.profiles.active=@activatedProperties@
только похоже не работает трюк, в логе The following profiles are active: @activatedProperties@

по @Profile понял ошибку, похоже половину предложения прочел в доке as a method-level annotation on any @Bean method

@ActiveProfiles - не совсем удобно, как я понимаю теперь в каждом scheduller надо расставлять что то типа
Код: java
1.
2.
3.
        if (Arrays.asList(environment.getActiveProfiles()).contains("dev") ) {
            return;
        }




ок, допустим я разобрался и выставил нужный profile, а как теперь элегантно не давать запускать помеченные @Scheduled анотацией методы (в отличных от prod профилях) ? @Scheduled методы у меня живут в разных сервисных классах и их несколько. пока выкрутился через @ActiveProfiles и проверкой на environment.getActiveProfiles()
...
Рейтинг: 0 / 0
26.05.2020, 17:51
    #39962384
asv79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring boot и Profile
решение твоей проблемы лежит в application.yml

spring:
profile:
test
и тд

у меня была похожая проблема когда нужно было юзать разные конфиги для бд на тестах и в деве
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring boot и Profile / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]