Введение
Приложения SpringBoot сканируются по умолчаниюclasspath:,classpath:/config,file:,file:config/в каталогеapplication*Профиль, приоритет от низкого к высокому.
- Если вам нужно собственное имя, вы можете использовать
spring.config.name="custom" - Если вам нужно настроить каталог сканирования, вы можете использовать
spring.config.location="/Users/tengchong/Desktop/", после добавления директория сканирования станет:classpath:classpath:/configfile: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/Пожалуйста, дайте мне знать причину каталога, спасибо
Укажите на ошибки, спасибо