Введение
Приложения SpringBoot сканируются по умолчаниюclasspath:,classpath:/config,file:,file:config/
в каталогеapplication*
Профиль, приоритет от низкого к высокому.
- Если вам нужно собственное имя, вы можете использовать
spring.config.name="custom"
- Если вам нужно настроить каталог сканирования, вы можете использовать
spring.config.location="/Users/tengchong/Desktop/"
, после добавления директория сканирования станет:classpath:
classpath:/config
file:
file:config/
file:/Users/tengchong/Desktop/
приоритет от низкого к высокому
развертывание пакета jar
Развертывание пакетов jar может быть выполнено при запуске черезspring.config.location
Чтобы указать каталог, в котором находится файл конфигурации,spring.profiles.active
Укажите среду
- команда запуска
java -jar easy-frame.jar --Dspring.config.location=/Users/tengchong/Desktop/ --spring.profiles.active=prod
При запуске вы можете увидеть информацию о выводе файла конфигурации сканирования в журнал
13:09:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Activated activeProfiles prod
13:09:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Profiles already activated, '[dev]' will not be applied
13:09:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Loaded config file 'jar:file:/Users/tengchong/Desktop/easy-frame.jar!/BOOT-INF/classes!/application.yml' (classpath:/application.yml)
13:09:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Loaded config file 'file:./application-prod.yml' (file:./application-prod.yml) for profile prod
13:09:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Loaded config file 'jar:file:/Users/tengchong/Desktop/easy-frame.jar!/BOOT-INF/classes!/application-prod.yml' (classpath:/application-prod.yml) for profile prod
В журнал загружаются три файла конфигурации (порядок загрузки не имеет ничего общего с приоритетом):
-
classes!/application.yml
Общая конфигурация в банке -
file:./application-prod.yml
/Users/tengchong/Desktop/
Соответствующая конфигурация среды prod в каталоге -
classes!/application-prod.yml
Соответствующая конфигурация среды prod в банке вclasses!/application-prod.yml
Дублированная часть конфига будет заменена наfile:./application-prod.yml
покрытие из-заapplication.yml
настроен вspring.profiles.active=dev
Итак, вот подсказкаProfiles already activated, '[dev]' will not be applied
Здесь его можно проигнорировать, потому что параметр вspring.profiles.active
Приоритет выше, чем здесь.
развертывание военного пакета
Развертывание военного пакета можно выполнить, установивJAVA_OPTS
для настройки параметров здесьapache-tomcat-8.5.40
пример
- Исправлять
bin/catalina.sh
vi ./bin/catalina.sh
- Добавьте параметры, около строки 250
JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dspring.config.location=/Users/tengchong/Desktop/ -Dspring.profiles.active=prod"
- Запустить tomcat после сохранения
./bin/startup.sh
В лог выводится следующая информация
13:23:53 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Activated activeProfiles prod
13:23:53 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Loaded config file 'file:/Users/tengchong/Desktop/application-prod.yml' (file:/Users/tengchong/Desktop/application-prod.yml) for profile prod
Обнаружено, что приложение не сканируется при запускеclasspath:,classpath:/config,file:,file:config/
Каталог только сканируетсяspring.config.location
Указанный каталог, конкретная причина которого неизвестна, будет временно примененapplication.yml
также положить/Users/tengchong/Desktop/
можно успешно начать после
Если вы знаете причину, по которой каталог `classpath:, classpath:/config, file:, file:config/` не сканируется под tomcat, сообщите мне об этом, спасибо.
13:26:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Activated activeProfiles prod
13:26:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Profiles already activated, '[dev]' will not be applied
13:26:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Loaded config file 'file:/Users/tengchong/Desktop/application.yml' (file:/Users/tengchong/Desktop/application.yml)
13:26:51 demo [main] DEBUG o.s.b.c.c.ConfigFileApplicationListener - Loaded config file 'file:/Users/tengchong/Desktop/application-prod.yml' (file:/Users/tengchong/Desktop/application-prod.yml) for profile prod
из-заapplication.yml
настроен вspring.profiles.active=dev
Итак, вот подсказкаProfiles already activated, '[dev]' will not be applied
Это можно игнорировать или удалить/Users/tengchong/Desktop/application.yml
серединаspring.profiles.active=dev
,потому чтоJAVA_OPTS
серединаspring.profiles.active
Приоритет выше, чем здесь.
Если вы знаете, что под tomcat нет сканирования
classpath:,classpath:/config,file:,file:config/
Пожалуйста, дайте мне знать причину каталога, спасибо
Укажите на ошибки, спасибо