티스토리 뷰
개요
Java 진영에는 많은 텍스트 템플릿 엔진이 존재한다. 대표적으로 FreeMarker가 있다. 강력하지만 간단한 텍스트 템플릿을 처리하기에는 무겁다. 닭 잡는데 소 잡는 칼을 사용하는 격이다. 짧고 단순한 텍스트 템플릿을 처리하기에는 Apache Commons Lang이 제공하는 StrSubstitutor
가 적당하다. 이번 글에서는 이를 이용하여 간단한 텍스트 템플릿을 처리하는 방법을 소개하고자 한다.
라이브러리 종속성 추가
/build.gradle 파일에 아래와 같이 라이브러리를 추가한다.
dependencies {
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.4'
compile group: 'com.google.guava', name: 'guava', version: '19.0'
}
StrSubstitutor
는 Apache Commons Lang에 속하기 때문에 해당 의존성을 추가한다.- Google Guava는 옵션이다. 소스 코드의 가독성을 위해
ImmutableMap
을 사용할 수 있다. 자세한 예는 아래를 참고한다.
템플릿 적용하기
StrSubstitutor
의 템플릿 기능을 적용하는 방법은 아래와 같이 매우 간단하다.
// 가장 일반적이고 원시적인 방법, 소스 코드 가독성이 떨어지며 추후 유지보수가 힘들다.
String boardId = "forum";
int postId = 65535;
String output = "/boards/" + boardId + "/posts/" + postId;
// StrSubstitutor의 템플릿 기능을 이용한 방법, 추후 유지보수가 편리하지만 소스 코드 가독성은 여전히 떨어진다.
String template = "/boards/${boardId}/posts/${postId}";
Map<String, Object> valueMap = new HashMap<String, Object>();
valueMap.put("boardId", "forum");
valueMap.put("postId", 65535);
String output = StrSubstitutor.replace(template, valueMap);
// Guava의 ImmutableMap을 이용하면 소스 코드 가독성이 좋아진다. 이 방법을 추천한다.
String template = "/boards/${boardId}/posts/${postId}";
String output = StrSubstitutor.replace(template, ImmutableMap.of("boardId", "forum", "postId", 65535));
참고 글
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 구동계
- MySQL
- DynamoDB
- Spring Boot
- Eclipse
- graylog
- CentOS
- 자전거
- 로드 바이크
- JHipster
- JavaScript
- Spring MVC 3
- chrome
- 태그를 입력해 주세요.
- 평속
- Docker
- jsp
- 알뜰폰
- maven
- kotlin
- bootstrap
- 로드바이크
- jstl
- spring
- Kendo UI
- jpa
- Kendo UI Web Grid
- java
- Tomcat
- node.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함