Groovy-템플릿 엔진
Groovy의 템플릿 엔진은 메일 병합 (데이터베이스에서 편지 및 봉투에 자동으로 이름과 주소를 추가하여 메일, 특히 광고, 많은 주소로 보내는 메일을 자동으로 추가)처럼 작동하지만 훨씬 더 일반적입니다.
문자열의 간단한 템플릿
아래의 간단한 예를 살펴보면 먼저 "Groovy"문자열을 포함 할 이름 변수를 정의합니다. println 문에서 $ 기호를 사용하여 값을 삽입 할 수있는 매개 변수 또는 템플릿을 정의합니다.
def name = "Groovy"
println "This Tutorial is about ${name}"
위 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다. 출력은 $ name이 def 문에 의해 할당 된 값으로 대체되었음을 명확하게 보여줍니다.
간단한 템플릿 엔진
다음은 매개 변수화 된 텍스트를 생성하기 위해 템플릿에서 JSP와 유사한 스크립틀릿 및 EL 표현식을 사용할 수있는 SimpleTemplateEngine의 예입니다. 템플릿 엔진을 사용하면 정의 된 자리 표시자가있는 문자열에서 대체 될 수 있도록 매개 변수 및 해당 값 목록을 바인딩 할 수 있습니다.
def text ='This Tutorial focuses on $TutorialName. In this tutorial you will learn
about $Topic'
def binding = ["TutorialName":"Groovy", "Topic":"Templates"]
def engine = new groovy.text.SimpleTemplateEngine()
def template = engine.createTemplate(text).make(binding)
println template
위 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다.
이제 XML 파일에 템플릿 기능을 사용해 보겠습니다. 첫 번째 단계로 Student.template이라는 파일에 다음 코드를 추가해 보겠습니다. 다음 파일에서 요소에 대한 실제 값이 아니라 자리 표시자를 추가했음을 알 수 있습니다. 따라서 $ name, $ is 및 $ subject는 모두 런타임에 교체해야하는 자리 표시 자로 배치됩니다.
<Student>
<name>${name}</name>
<ID>${id}</ID>
<subject>${subject}</subject>
</Student>
이제 Groovy 스크립트 코드를 추가하여 위 템플릿을 실제 값으로 대체하는 데 사용할 수있는 기능을 추가해 보겠습니다. 다음 코드에 대해 다음 사항에 유의해야합니다.
자리 표시 자와 실제 값의 매핑은 바인딩 및 SimpleTemplateEngine을 통해 수행됩니다. 바인딩은 자리 표시자를 키로 사용하고 대체를 값으로 사용하는 맵입니다.
import groovy.text.*
import java.io.*
def file = new File("D:/Student.template")
def binding = ['name' : 'Joe', 'id' : 1, 'subject' : 'Physics']
def engine = new SimpleTemplateEngine()
def template = engine.createTemplate(file)
def writable = template.make(binding)
println writable
위 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다. 출력에서 값이 관련 자리 표시 자에서 성공적으로 대체되었음을 알 수 있습니다.
<Student>
<name>Joe</name>
<ID>1</ID>
<subject>Physics</subject>
</Student>
StreamingTemplateEngine
StreamingTemplateEngine 엔진은 Groovy에서 사용할 수있는 또 다른 템플릿 엔진입니다. 이것은 SimpleTemplateEngine과 동일하지만 쓰기 가능한 클로저를 사용하여 템플릿을 생성하여 큰 템플릿에 대해 더 확장 가능합니다. 특히이 템플릿 엔진은 64k보다 큰 문자열을 처리 할 수 있습니다.
다음은 StreamingTemplateEngine이 사용되는 방법의 예입니다.
def text = '''This Tutorial is <% out.print TutorialName %> The Topic name
is ${TopicName}'''
def template = new groovy.text.StreamingTemplateEngine().createTemplate(text)
def binding = [TutorialName : "Groovy", TopicName : "Templates",]
String response = template.make(binding)
println(response)
위 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다.
This Tutorial is Groovy The Topic name is Templates
XMLTemplateEngine
XmlTemplateEngine은 템플릿 소스와 예상 출력이 모두 XML이되는 템플릿 시나리오에서 사용됩니다. 템플릿은 일반적인 $ {expression} 및 $ variable 표기법을 사용하여 템플릿에 임의의 식을 삽입합니다.
다음은 XMLTemplateEngine이 사용되는 방법의 예입니다.
def binding = [StudentName: 'Joe', id: 1, subject: 'Physics']
def engine = new groovy.text.XmlTemplateEngine()
def text = '''\
<document xmlns:gsp='http://groovy.codehaus.org/2005/gsp'>
<Student>
<name>${StudentName}</name>
<ID>${id}</ID>
<subject>${subject}</subject>
</Student>
</document>
'''
def template = engine.createTemplate(text).make(binding)
println template.toString()
위의 코드가 groovy에서 실행되면 다음과 같은 출력이 표시됩니다.
Joe
1
Physics