본문 바로가기

소프트웨어/웹

[Spring boot | thymeleaf] pom.xml의 데이터를 가져와서 화면에 할당하는 방법

pom.xml에 정의된 데이터를 웹페이지에 뿌려주고 싶은 경우 다음과 구성합니다.

 

이 예제에서는 pom.xml의 <version>태그의 데이터를 가져와서 Thymeleaf를 통해 보여줄 수 있도록 합니다.

 

 

 

1. pom.xml 파일 확인

 

먼저 pom.xml 파일을 열어보면 다음과 같은 구조로 되어 있습니다. 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	...
	<version>0.0.1</version>
	...
</project>

 

 

 

2. application.yaml / application.properties 설정

 

우리가 참조해야할 <version> 태그는 <project> 태그의 하위에 있기 때문에 application.yaml이나 application.properties에 다음과 같이 작성해줍니다.

 

 

* yaml을 사용하는 경우

myapp:
	version: @project.version@

 

 

* properties를 사용하는 경우

myapp.version=@project.version@

 

 

 참고로 커스텀 속성을 사용하는 것이므로 /resource/META-INF/additional-spring-configuration-metadata.json에 다음과 같이 추가 작성을 해주면 IDE에서 warning 메시지를 없앨 수 있습니다.

 

 

 

 

{
    "properties": [
        {
            "name": "myapp.version",
            "type": "String"
        }
    ]
}

 

 

 

3. ControllerAdvice 작성

 

Java 클래스를 한 개 생성하여 다음과 같이 작성해줍니다.

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;

@ControllerAdvice
public class VersionController {
    
    @Value("${myapp.version}")
    private String applicationVersion;

    @ModelAttribute("applicationVersion")
    public String getApplicationVersion() {
    	return applicationVersion;
    }
}

 

위의 코드는 application 파일에서 myapp.version 프로퍼티를 applicationVersion에 주입하고 ModelAttribute로 접근할 수 있게 합니다.

 

 

 

4. HTML (Thymeleaf 렌더링) 작성

 

마지막으로 html 파일을 다음과 같이 작성해줍니다.

 

<html xmlns:th="http://www.thymeleaf.org">
.
.
.
<b>Version</b> <span th:text="${applicationVersion}">버전명</span>

 

버전명이 동적으로 할당 된다!

 

 

위와 동일한 방법으로 pom.xml의 여러가지 값들을 가져올 수 있기에 여러모로 활용해볼 수 있겠네요.

 

 

 

 

출처:

https://stackoverflow.com/questions/39275668/display-application-version-in-title-using-thymeleaf-and-springboot