Автор оригинала: Jacob Stopak.
Эта статья относится к сайтам, созданным с помощью платформы Spring Boot, с использованием Apache Maven в качестве инструмента сборки. Чтобы продемонстрировать, как работают профили, мы рассмотрим пример использования Google Analytics и Google Tag Manager для отслеживания показателей сайта. Я использую этот метод для своего веб-сайта Начальная фиксация , который построен с использованием Spring Boot , движка шаблонов Thymeleaf и размещен на AWS Elastic Beanstalk.
Что такое профили загрузки Spring?
Один из основных принципов дизайна Spring Boot заключается в том, что он поощряет условности, а не конфигурацию. Это означает, что в подавляющем большинстве конфигураций приложений используются разумные значения по умолчанию, которые при необходимости могут быть переопределены, но в целом приложение Spring Boot будет работать “из коробки” без необходимости в пользовательской конфигурации.
Однако, как правило, необходима некоторая настройка, и часто нам нужна настройка для конкретной среды. Вот где пригодятся профили. Профиль в Spring Boot можно рассматривать как контекст, определяющий определенный набор настроек, переменных и поведения приложения. Каждый раз при создании приложения разработчик может указать, какой профиль использовать. Если профиль не указан, будет использоваться значение по умолчанию.
В этой статье мы создадим профиль разработчика и профиль продукта, чтобы включить свойства конфигурации, зависящие от среды.
Мы можем легко определить профили, добавив следующий XML-файл в проекта pom.xml
файл:
dev dev true prod prod
Обратите внимание на тег true
, который означает, что профиль разработки будет использоваться по умолчанию, если во время сборки профиль не указан.
Профили работают в сочетании с файлами свойств Spring Boot. По умолчанию Spring Boot анализирует файл с именем application.properties
, расположенный в каталоге src/main/resources
, для определения информации о конфигурации.
Нашей первой задачей будет добавить параметр в этот файл, который подскажет Spring использовать другой файл свойств для конкретной среды, соответствующий активному профилю (т. Е. профилю, с которым в настоящее время запускается приложение). Мы можем сделать это, добавив следующее в файл application.properties
:
Теперь нам нужно создать два новых файла свойств для конкретной среды (по тому же пути, что и существующий файл application.properties
), один из которых будет использоваться профилем разработчика, а другой-профилем продукта. Эти файлы должны быть названы следующим образом:
Теперь нам нужно создать два новых файла свойств для конкретной среды (по тому же пути, что и существующий файл
application.properties
В каждом из этих файлов могут быть определены свойства, которые будут применяться только при активном соответствующем профиле.
Чтобы сделать эту концепцию более понятной, давайте рассмотрим реальный пример с использованием Google Analytics и конфигурации диспетчера тегов Google на сайте Spring Boot, который я подробно рассмотрю в следующих нескольких разделах.
Обзор Google Analytics и менеджера тегов Google
Если вы веб-разработчик с активным сайтом, то, скорее всего, используете платформу Google для аналитики, отслеживания событий, отслеживания конверсий и статистики рейтинга в поисковых системах.
Следующие бесплатные инструменты Google предоставляют эти услуги:
- Google Analytics
- Менеджер тегов Google
- Консоль поиска Google
Google Analytics ссылается на ваш домен и отслеживает широкий спектр статистических данных, включая просмотры страниц, информацию о сеансах, местоположение аудитории и триггеры событий в историческом контексте и в режиме реального времени.
Менеджер тегов Google интегрируется с Google Analytics и позволяет разработчикам определять события, которые отслеживаются Google Analytics. Это делается путем определения прослушивателей диспетчера тегов, которые ссылаются на определенные элементы HTML на вашем веб-сайте, которые ожидают наступления указанных событий (например, щелчка или прокрутки). Когда пользователь сайта выполняет событие, выполняется вызов в Google Analytics, который регистрирует событие.
Консоль поиска Google предоставляет информацию о том, как Google сканирует ваш сайт, сколько сайтов ссылаются на ваш и где ваш сайт занимает место на основе ключевых слов поиска.
Если вы использовали эти инструменты раньше, вы будете знать, что для привязки вашего веб-сайта к вашей учетной записи Google Analytics Google предоставляет идентификатор отслеживания в следующем формате:
UA-123456789-1
Этот идентификатор отслеживания внедряется на ваш сайт с помощью фрагмента HTML-кода, предоставленного Google:
Аналогично, менеджер тегов Google предоставляет идентификатор GTM в следующем формате:
GTM-ABCDEF1
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
Это также должно быть встроено в ваш сайт с помощью фрагмента HTML-кода:
Настройка идентификаторов отслеживания с помощью профилей
Теперь все это хорошо и хорошо – пользователи, которые взаимодействуют с сайтом, будут запрашивать данные для входа в связанную учетную запись Google Analytics. Однако, поскольку идентификаторы отслеживания жестко закодированы на HTML-страницах, данные будут отслеживаться даже тогда, когда разработчики и тестировщики загружают эти страницы в разрабатываемых и тестовых версиях сайта. Это приведет к искажению данных и завышению фактической статистики сайта.
Чтобы решить эту проблему, мы можем настроить фиктивные значения для идентификаторов отслеживания в профиле разработки, чтобы данные не регистрировались в Google при доступе к страницам сайта в более низких средах.
Профиль РАЗРАБОТЧИКА определит фиктивные значения для идентификаторов отслеживания Google Analytics и диспетчера тегов, а профиль ПРОДУКТА будет использовать реальные значения. Затем мы заменим жестко закодированные значения в шаблонах HTML значением динамического свойства.
В файле свойств РАЗРАБОТЧИКА application-dev.properties
мы можем добавить фиктивные значения для идентификаторов отслеживания Google Analytics и диспетчера тегов следующим образом:
googleanalyticsid=UA-XXXXXXXXXX-1 googletagmanagerid=GTM-XXXXXX1
В файле свойств продукта application-prod.properties
мы можем добавить фактические значения идентификаторов отслеживания Google Analytics и диспетчера тегов:
googleanalyticsid=UA-123456789-1 googletagmanagerid=GTM-ABCDEF1
Последним шагом является замена жестко закодированной ссылки на идентификаторы отслеживания в шаблонах HTML. Используя механизм шаблонов Thymeleaf , это можно сделать, заменив жестко запрограммированный идентификатор отслеживания Google Analytics на:
${@environment.getProperty('googleanalyticsid')}
и идентификатор отслеживания менеджера тегов Google с:
${@environment.getProperty('googletagmanagerid')}
Конечным результатом является то, что фрагменты кода, предоставленные Google now, выглядят следующим образом (обратите внимание, что из-за вложенных кавычек вокруг переменной добавляются двойные квадратные скобки).:
Вот и все! Теперь всякий раз, когда приложение создается и запускается без указания профиля – например, в среде IDE, такой как Spring Tool Suite, Eclipse или IntelliJ, – профиль разработчика будет выбран по умолчанию, а фиктивные значения будут заменены идентификаторами отслеживания Google. Это предотвратит загрузку любых страниц и запуск событий для регистрации данных на платформе Google.
Указание профиля во время сборки
При создании приложения для производства нам необходимо указать профиль продукта, который будет использоваться, чтобы использовались реальные значения идентификатора отслеживания. Вот как это делается с помощью Maven в качестве инструмента сборки:
$ mvn -Pprod clean install
Ключом к этой команде является флаг -P
, который используется для указания профиля, используемого для сборки.
Если мы хотим задать профиль после создания кода, мы можем использовать аргумент виртуальной машины Java при запуске приложения. Это делается следующим образом:
$ java –jar -Dspring.profiles.active=prod app.jar
В качестве альтернативы профиль можно напрямую указать в файле application.properties
, добавив строку:
spring.profiles.active=prod
В каждом случае мы указываем prod
в качестве активного профиля, что приводит к выбору файла application-prod.properties
для целей конфигурации. Поскольку этот файл содержит реальные значения идентификаторов отслеживания, они будут вставлены в шаблоны в рабочей сборке, и события пользователей будут успешно отслеживаться на платформе Google.
Об авторе
Эта статья была написана Джейкобом Стопаком, консультантом по программному обеспечению и разработчиком, страстно желающим помочь другим улучшить свою жизнь с помощью кода. Иаков является создателем Начальная фиксация – сайт, посвященный тому, чтобы помочь любознательным разработчикам узнать, как кодируются их любимые программы. Его рекомендуемый проект помогает людям изучать Git на уровне кода.