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의 여러가지 값들을 가져올 수 있기에 여러모로 활용해볼 수 있겠네요.
출처:
'소프트웨어 > 웹' 카테고리의 다른 글
[Spring/JPA] RestController에서 텍스트 형태의 JSON string 데이터 처리 (0) | 2021.10.22 |
---|---|
[Spring-Maven] Maven 빌드 시 JUnit Test 하지 않도록 설정하기 (0) | 2021.04.06 |
[Spring boot] VS Code Spring Boot Extension의 app이 안보이는 현상 해결 (8) | 2021.03.17 |
[Spring boot] 에러 페이지 처리 (0) | 2020.08.21 |
[Spring boot] JUnit 테스트가 안되는 경우 (0) | 2020.07.30 |