[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의 여러가지 값들을 가져올 수 있기에 여러모로 활용해볼 수 있겠네요.
출처: