Spring Cloud Config Server предлагает следующие преимущества:
API на основе HTTP-ресурсов для внешней конфигурации (пары имя-значение или эквивалентный контент YAML)
Шифровать и дешифровать значения свойств (симметричные или асимметричные)
Легко встраивается в приложение Spring Boot с помощью @EnableConfigServer
Специально для приложений Spring Spring Cloud Config Client позволяет:
Привяжитесь к серверу конфигурации и инициализируйте Environment
Spring с помощью удаленных источников свойств.
Шифрование и дешифрование значений свойств (симметричное или асимметричное).
@RefreshScope
для Spring @Beans
, которые необходимо повторно инициализировать при изменении конфигурации.
Используйте конечные точки управления:
/env
для обновления Environment
и повторной привязки @ConfigurationProperties
и уровней журнала.
/refresh
для обновления bean-компонентов @RefreshScope
.
/restart
для перезапуска контекста Spring (по умолчанию отключено).
/pause
и /resume
для вызова методов Lifecycle
( stop()
и start()
в ApplicationContext
).
Контекст приложения начальной загрузки: родительский контекст для основного приложения, который можно обучить делать что угодно (по умолчанию он привязывается к серверу конфигурации и расшифровывает значения свойств).
Образец заявления вы можете найти здесь. Это приложение Spring Boot, поэтому вы можете запустить его, используя обычные механизмы (например, mvn spring-boot:run
). При запуске он ищет сервер конфигурации по адресу http://localhost:8888
(настраиваемый по умолчанию), так что вы также можете запустить сервер и увидеть, как все работает вместе.
В образце есть тестовый пример, в котором сервер конфигурации также запускается в той же JVM (с другим портом), и тест утверждает, что свойство среды из репозитория конфигурации git присутствует. Чтобы изменить местоположение сервера конфигурации, вы можете установить spring.cloud.config.uri
в bootstrap.yml
(или в свойствах системы и других местах).
В тестовом примере есть метод main()
, который запускает сервер таким же образом (смотрите журналы его порта), поэтому вы можете запустить всю систему в одном процессе и поиграть с ней (например, вы можете запустить main()
метод в вашей IDE). Метод main()
использует target/config
для рабочего каталога репозитория git, поэтому вы можете вносить локальные изменения и видеть их отражение в работающем приложении. В следующем примере показан сеанс работы с тестовым примером:
$ Curl локальный хост: 8080/env/образец мойтест $ vi target/config/mytest.properties .. измените значение «образца», при необходимости зафиксируйте $ curl -X POST локальный хост: 8080/обновить ["образец"] $ Curl локальный хост: 8080/env/образец образецзначения
Конечная точка обновления сообщает, что свойство «образец» изменилось.
Для сборки исходного кода вам потребуется установить JDK 17.
Spring Cloud использует Maven для большинства действий, связанных со сборкой, и вы сможете довольно быстро приступить к работе, клонировав интересующий вас проект и набрав
$ ./mvnw установка
Примечание | Вы также можете установить Maven (>=3.3.3) самостоятельно и запустить команду mvn вместо ./mvnw в примерах ниже. Если вы это сделаете, вам также может потребоваться добавить -P spring , если ваши локальные настройки Maven не содержат объявлений репозитория для предварительных артефактов Spring. |
Примечание | Имейте в виду, что вам может потребоваться увеличить объем памяти, доступной для Maven, установив для переменной среды MAVEN_OPTS значение типа -Xmx512m -XX:MaxPermSize=128m . Мы стараемся учесть это в конфигурации .mvn , поэтому, если вы обнаружите, что это необходимо сделать для успешной сборки, поднимите заявку, чтобы добавить настройки в систему контроля версий. |
Проекты, которым для тестирования требуется промежуточное программное обеспечение (например, Redis), обычно требуют, чтобы локальный экземпляр [Docker](https://www.docker.com/get-started) был установлен и запущен.
Модуль Spring-cloud-build имеет профиль «docs», и если вы включите его, он попытается собрать исходные коды asciidoc с помощью Antora из modules/ROOT/
.
В рамках этого процесса он будет искать файл docs/src/main/asciidoc/README.adoc
и обрабатывать его, загружая все включения, но не анализируя и не отображая его, а просто копируя в ${main.basedir}
(по умолчанию — ${basedir}
, то есть корень проекта). Если в README есть какие-либо изменения, они отобразятся после сборки Maven в виде измененного файла в правильном месте. Просто зафиксируйте это и внесите изменения.
Если у вас нет предпочтений IDE, мы рекомендуем вам использовать Spring Tools Suite или Eclipse при работе с кодом. Мы используем плагин m2eclipse eclipse для поддержки maven. Другие IDE и инструменты также должны работать без проблем, если они используют Maven 3.3.3 или более позднюю версию.
Для проектов Spring Cloud необходимо активировать «весенний» профиль Maven для разрешения весенних этапов и репозиториев снимков. Используйте предпочитаемую вами интегрированную среду разработки, чтобы сделать этот профиль активным, иначе могут возникнуть ошибки сборки.
Мы рекомендуем плагин m2eclipse eclipse при работе с eclipse. Если у вас еще не установлен m2eclipse, он доступен на «рынке eclipse».
Примечание | Старые версии m2e не поддерживают Maven 3.3, поэтому после импорта проектов в Eclipse вам также нужно будет указать m2eclipse использовать правильный профиль для проектов. Если вы видите в проектах много различных ошибок, связанных с POM, убедитесь, что у вас установлена актуальная версия. Если вы не можете обновить m2e, добавьте профиль «spring» в свой settings.xml . В качестве альтернативы вы можете скопировать настройки репозитория из профиля «spring» родительского pom в свой settings.xml . |
Если вы предпочитаете не использовать m2eclipse, вы можете сгенерировать метаданные проекта eclipse, используя следующую команду:
$ ./mvnw затмение: затмение
Сгенерированные проекты eclipse можно импортировать, выбрав import existing projects
в меню file
.
Если вы получаете исключение из-за «Недопустимого размера ключа» и используете Sun JDK, вам необходимо установить файлы политики юрисдикции неограниченной силы Java Cryptography Extension (JCE). Дополнительные сведения см. по следующим ссылкам:
Ява 6 JCE
Ява 7 JCE
Ява 8 JCE
Извлеките файлы JCE в папку JDK/jre/lib/security
для любой версии JRE/JDK x64/x86, которую вы используете.
Spring Cloud выпускается под неограниченной лицензией Apache 2.0 и следует стандартному процессу разработки Github, используя трекер Github для выявления проблем и объединяя запросы на включение в основной. Если вы хотите внести хотя бы что-то тривиальное, не стесняйтесь и следуйте приведенным ниже рекомендациям.
Прежде чем мы примем нетривиальное исправление или запрос на включение, нам нужно, чтобы вы подписали Лицензионное соглашение для участников. Подписание соглашения с автором не дает никому никаких прав на использование основного репозитория, но это означает, что мы можем принять ваши вклады, и если мы это сделаем, вы получите признание автора. Активных участников могут попросить присоединиться к основной команде и предоставить им возможность объединять запросы на включение.
Этот проект соответствует кодексу поведения участников Соглашения. Ожидается, что, участвуя, вы будете соблюдать этот кодекс. Пожалуйста, сообщите о неприемлемом поведении по адресу [email protected].
Ничто из этого не является необходимым для запроса на включение, но все они помогут. Их также можно добавить после исходного запроса на включение, но до слияния.
Используйте соглашения о формате кода Spring Framework. Если вы используете Eclipse, вы можете импортировать настройки форматтера, используя файл eclipse-code-formatter.xml
из проекта Spring Cloud Build. Если вы используете IntelliJ, вы можете использовать плагин форматирования кода Eclipse для импорта того же файла.
Убедитесь, что все новые файлы .java
содержат простой комментарий к классу Javadoc, по крайней мере, с тегом @author
идентифицирующим вас, и желательно, по крайней мере, с абзацем о том, для чего предназначен этот класс.
Добавьте комментарий заголовка лицензии ASF во все новые файлы .java
(скопируйте существующие файлы в проекте).
Добавьте себя в качестве @author
в файлы .java, которые вы существенно измените (а не только косметические изменения).
Добавьте немного Javadocs и, если вы измените пространство имен, некоторые элементы документа XSD.
Несколько модульных тестов тоже очень помогли бы — кто-то должен это сделать.
Если никто больше не использует вашу ветку, перебазируйте ее на текущую основную (или другую целевую ветку в основном проекте).
При написании сообщения о фиксации следуйте этим соглашениям. Если вы исправляете существующую проблему, добавьте Fixes gh-XXXX
в конце сообщения о фиксации (где XXXX — номер проблемы).
Spring Cloud Build поставляется с набором правил проверки стилей. Вы можете найти их в модуле spring-cloud-build-tools
. Наиболее примечательными файлами модуля являются:
└── источник ├── контрольный стиль │ └── checkstyle-suppressions.xml (3) └── главный └── ресурсы ├── checkstyle-header.txt (2) └── checkstyle.xml (1)
Правила Checkstyle по умолчанию
Настройка заголовка файла
Правила подавления по умолчанию
По умолчанию правила Checkstyle отключены . Чтобы добавить контрольный стиль в свой проект, просто определите следующие свойства и плагины.
<свойства> <maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError> (1) <maven-checkstyle-plugin.failsOnViolation>true </maven-checkstyle-plugin.failsOnViolation> (2) <maven-checkstyle-plugin.includeTestSourceDirectory>true </maven-checkstyle-plugin.includeTestSourceDirectory> (3) </свойства> <сборка> <плагины> <плагин> (4) <groupId>io.spring.javaformat</groupId> <artifactId>spring-javaformat-maven-plugin</artifactId> </плагин> <плагин> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>плагин maven-checkstyle</artifactId> </плагин> </плагины> <отчетность> <плагины> <плагин> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>плагин maven-checkstyle</artifactId> </плагин> </плагины> </отчетность> </сборка>
Сбой сборки из-за ошибок Checkstyle.
Не удается построить сборку из-за нарушений Checkstyle.
Checkstyle анализирует также исходники тестов.
Добавьте плагин Spring Java Format, который переформатирует ваш код, чтобы он соответствовал большинству правил форматирования Checkstyle.
Добавьте плагин checkstyle на этапы сборки и отчетности.
Если вам необходимо подавить некоторые правила (например, длина строки должна быть больше), вам достаточно определить файл в ${project.root}/src/checkstyle/checkstyle-suppressions.xml
с вашими подавлениями. Пример:
<?xml версия="1.0"?> <!DOCTYPE подавление PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <подавления> <suppress files=".*ConfigServerApplication.java" checks="HideUtilityClassConstructor"/> <suppress files=".*ConfigClientWatch.java" checks="LineLengthCheck"/> </подавления>
Рекомендуется скопировать форматы ${spring-cloud-build.rootFolder}/.editorconfig
и ${spring-cloud-build.rootFolder}/.springformat
в ваш проект. Таким образом, будут применены некоторые правила форматирования по умолчанию. Вы можете сделать это, запустив этот скрипт:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/.editorconfig -o .editorconfig
$ touch .springformat
Чтобы настроить Intellij, вам необходимо импортировать наши соглашения о кодировании, профили проверки и настроить плагин checkstyle. Следующие файлы можно найти в проекте Spring Cloud Build.
└── источник ├── контрольный стиль │ └── checkstyle-suppressions.xml (3) └── главный └── ресурсы ├── checkstyle-header.txt (2) ├── checkstyle.xml (1) └── интеллект ├── Intellij_Project_Defaults.xml (4) └── Intellij_Spring_Boot_Java_Conventions.xml (5)
Правила Checkstyle по умолчанию
Настройка заголовка файла
Правила подавления по умолчанию
Значения проекта по умолчанию для Intellij, которые применяют большинство правил Checkstyle.
Соглашения о стиле проекта для Intellij, которые применяют большинство правил Checkstyle.
Перейдите в File
→ Settings
→ Editor
→ Code style
. Там нажмите на иконку рядом с разделом Scheme
. Там щелкните значение Import Scheme
и выберите параметр Intellij IDEA code style XML
. Импортируйте файл spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
.
Перейдите в File
→ Settings
→ Editor
→ Inspections
. Там нажмите на иконку рядом с разделом Profile
. Там нажмите Import Profile
и импортируйте файл spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
.
Чтобы Intellij работал с Checkstyle, вам необходимо установить плагин Checkstyle
. Целесообразно также установить Assertions2Assertj
для автоматического преобразования утверждений JUnit.
Перейдите в File
→ Settings
→ Other settings
→ Checkstyle
. Там нажмите на значок +
в разделе Configuration file
. Там вам нужно будет определить, откуда следует выбирать правила стиля проверки. На изображении выше мы выбрали правила из клонированного репозитория Spring Cloud Build. Однако вы можете указать репозиторий GitHub Spring Cloud Build (например, для checkstyle.xml
: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml
). Нам необходимо предоставить следующие переменные:
checkstyle.header.file
— укажите файл Spring Cloud Build, spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
либо в вашем клонированном репозитории, либо через https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
URL.
checkstyle.suppressions.file
— подавления по умолчанию. Пожалуйста, укажите его в файле Spring Cloud Build, spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
либо в вашем клонированном репозитории, либо через https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
URL-адрес https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
.
checkstyle.additional.suppressions.file
— эта переменная соответствует подавлениям в вашем локальном проекте. Например, вы работаете над spring-cloud-contract
. Затем укажите папку project-root/src/checkstyle/checkstyle-suppressions.xml
. Примером spring-cloud-contract
может быть: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
.
Важный | Не забудьте установить для Scan Scope All sources , поскольку мы применяем правила проверки стиля для рабочих и тестовых источников. |
Spring Cloud Build включает в себя basepom:duplicate-finder-maven-plugin
, который позволяет помечать повторяющиеся и конфликтующие классы и ресурсы в пути к классам Java.
Поиск дубликатов включен по умолчанию и будет работать на этапе verify
вашей сборки Maven, но он вступит в силу в вашем проекте только в том случае, если вы добавите плагин duplicate-finder-maven-plugin
в раздел build
pom.xml
проекта.
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
</ plugin >
</ plugins >
</ build >
Для других свойств мы установили значения по умолчанию, как указано в документации плагина.
Вы можете легко их переопределить, но установив значение выбранного свойства с префиксом duplicate-finder-maven-plugin
. Например, установите duplicate-finder-maven-plugin.skip
значение true
, чтобы пропустить проверку дубликатов в вашей сборке.
Если вам нужно добавить ignoredClassPatterns
или ignoredResourcePatterns
в вашу настройку, обязательно добавьте их в раздел конфигурации плагина вашего проекта:
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
< configuration >
< ignoredClassPatterns >
< ignoredClassPattern >org.joda.time.base.BaseDateTime</ ignoredClassPattern >
< ignoredClassPattern >.*module-info</ ignoredClassPattern >
</ ignoredClassPatterns >
< ignoredResourcePatterns >
< ignoredResourcePattern >changelog.txt</ ignoredResourcePattern >
</ ignoredResourcePatterns >
</ configuration >
</ plugin >
</ plugins >
</ build >