Spring Boot + Thymeleaf 환경별 스크립트 적용하기 (로컬에서는 제외)

이경헌·2025년 5월 19일
0

웹 프로젝트에 구글 애널리틱스를 적용할 때, 보통 운영 환경에서만 작동하도록 설정하고 싶을 때가 많습니다.
특히 로컬 개발환경에서는 구글 애널리틱스 스크립트가 불필요하거나, 테스트 시 트래픽에 영향을 주지 않도록 제외하는 게 좋죠.


문제 상황

아래처럼 구글 애널리틱스 스크립트를 템플릿에 직접 넣으면, 로컬에서도 항상 스크립트가 로드됩니다.

<script async src="https://www.googletagmanager.com/gtag/js?id=******"></script>
<script src="/js/common/google-analytics.js"></script>

개발 중에는 구글에 쓸데없는 데이터가 쌓이거나, 스크립트로 인한 성능 문제, 디버깅 방해 등이 발생할 수 있습니다.


해결 방법: Spring 프로파일을 이용한 조건부 렌더링

Spring Boot에서는 환경마다 서로 다른 프로파일(environment profile)을 설정할 수 있습니다.
예를 들어 local, dev, prod 등의 프로파일이 있죠.

Thymeleaf 템플릿에서 이 프로파일을 활용해, 운영환경이 아닐 때 구글 애널리틱스 스크립트가 포함되지 않도록 제어할 수 있습니다.


구현 코드 예시

템플릿에 아래처럼 조건문을 추가하세요.

<th:block th:if="${!@environment.acceptsProfiles('dev')}">
  <script async src="https://www.googletagmanager.com/gtag/js?id=*****"></script>
  <script src="/js/common/google-analytics.js"></script>
</th:block>
  • @environment.acceptsProfiles('dev') 는 현재 활성화된 프로파일이 dev 인지 체크합니다.
  • !를 붙여서 로컬이 아닐 때만 스크립트가 렌더링됩니다.

주의사항

  • Spring Boot에서 Environment 빈은 기본 등록되어 있으니 별도 설정은 보통 필요 없습니다.
  • dev 대신 프로젝트에서 사용하는 실제 로컬 프로파일 이름을 넣어주세요.
  • 이 방법은 Thymeleaf 등 서버 템플릿 렌더링 시에만 작동합니다.

정리

  • 구글 애널리틱스 스크립트가 로컬에서 실행되는 문제를 해결하기 위해
  • Spring 프로파일 환경변수를 Thymeleaf 조건문에 활용하여
  • 로컬 환경에서는 스크립트가 렌더링되지 않도록 설정하는 방법을 소개했습니다.

이렇게 하면 불필요한 로컬 데이터 수집을 막고, 개발 편의성을 높일 수 있습니다.

0개의 댓글