아파치 벨로시티
보이기
![]() | |
개발자 | 아파치 소프트웨어 재단 |
---|---|
안정화 버전 | 2.4.1
/ 2024년 10월 14일[1] |
저장소 | Velocity Repository |
프로그래밍 언어 | 자바 |
운영 체제 | 크로스 플랫폼 |
종류 | 템플릿 엔진 |
라이선스 | 아파치 라이선스 2.0 |
웹사이트 | velocity |
아파치 벨로시티(Apache Velocity)는 2001년 4월에 처음 출시된 자바 기반 템플릿 엔진으로, 자바 코드에 정의된 객체를 참조하는 템플릿 언어를 제공한다. 웹 애플리케이션에서 모델-뷰-컨트롤러 디자인 패턴을 통해 프리젠테이션 계층과 비즈니스 계층 간의 깔끔한 분리를 보장하는 것을 목표로 한다.
벨로시티는 아파치 소프트웨어 재단에서 호스팅하는 오픈 소스 소프트웨어 프로젝트이다. 아파치 라이선스 하에 배포된다. 존 스콧 스티븐스(Jon Scott Stevens)는 파워PC G4 칩의 AltiVec 벨로시티 엔진에서 이름을 따왔다.
용도
[편집]벨로시티를 사용하는 몇 가지 일반적인 애플리케이션 유형은 다음과 같다.
웹 애플리케이션: 웹 개발자는 HTML 페이지 구조를 렌더링한다. 콘텐츠는 동적 정보로 채워진다. 페이지는 VelocityViewServlet 또는 벨로시티를 지원하는 여러 프레임워크 중 하나로 처리된다.AWS API Gateway body mapping template. - 소스 코드 생성: 벨로시티는 템플릿을 기반으로 자바, SQL, 포스트스크립트 소스 코드를 생성하는 데 사용할 수 있다. 여러 오픈 소스 및 상용 개발 소프트웨어 패키지가 이러한 방식으로 벨로시티를 사용한다.[2]
- 자동 전자우편: 많은 애플리케이션이 계정 가입, 비밀번호 알림, 또는 자동으로 전송되는 보고서에 대한 자동 이메일을 생성한다. 벨로시티를 사용하면 이메일 템플릿을 자바 코드에 직접 포함시키는 대신 텍스트 파일에 저장할 수 있다.
- XML 변환: 벨로시티는 아나키아(Anakia)라는 앤트 작업을 제공하는데, 이는 XML 파일을 읽어 벨로시티 템플릿에서 사용할 수 있도록 한다. 일반적인 응용 프로그램은 일반적인 "xdoc" 형식으로 저장된 소프트웨어 문서화를 스타일이 적용된 HTML 문서로 변환하는 것이다.
- AWS API Gateway는 JSON 출력을 위해 Apache Velocity 엔진을 바디 매핑 템플릿에 사용한다.
코드 예시
[편집]다음 템플릿:
## Velocity Hello World
<html>
<body>
#set( $foo = "Velocity" )
## followed by
Hello $foo World!
</body>
</html>
벨로시티에 의해 처리되면 다음과 같은 HTML이 생성된다.
<html>
<body>
Hello Velocity World!
</body>
</html>
조건을 사용한 또 다른 예제:
#if( $foo < 10 )
**Go North**
#elseif( $foo == 10 )
**Go East**
#elseif( $bar == 6 )
**Go South**
#else
**Go West**
#end
다이나모DB HTTP용 AWS API 게이트웨이 본문 매핑 템플릿:
{
"TableName": "happy-marketer",
"KeyConditionExpression": "pk = :pk AND begins_with(sk, :sk)",
#if ($input.params('projectStatus') == 'archived')
"FilterExpression": "projectStatus = :Archived",
#else
"FilterExpression": "projectStatus = :InProgress OR projectStatus = :Completed",
#end
"ExpressionAttributeValues": {
":pk": {
"S": "project"
},
":sk": {
"S": "$context.authorizer.claims.email"
},
#if ($input.params('projectStatus') == 'archived')
":Archived": {
"S": "Archived"
}
#else
":InProgress": {
"S": "In Progress"
},
":Completed": {
"S": "Completed"
}
#end
}
}
옵션 배열을 사용한 또 다른 예제; 조건이 없으면 잘못된 결과 JSON으로 인해 실패한다:
{
"email": "$context.authorizer.claims.email"
#if ($input.params('countries') != "")
, "countries": $input.params('countries')
#end
}
Apache Velocity 템플릿의 구문 및 전체 개념은 현재 오픈 소스 프로젝트인 오래된 WebMacro 템플릿 엔진의 구문과 유사하다.
같이 보기
[편집]각주
[편집]- ↑ “Apache Velocity - Project News”. 《velocity.apache.org》. Apache Software Foundation. 2025년 3월 17일에 확인함.
- ↑ “PoweredByVelocity”. 《Velocity Wiki》. Wiki.apache.org. 2009년 12월 30일. 2010년 3월 23일에 원본 문서에서 보존된 문서. 2010년 3월 29일에 확인함.
참고 자료
[편집]- Harrop, Rob; Darwin, Ian (2004년 8월 30일), 《Pro Jakarta Velocity: From Professional to Expert》 1판, Apress, 370쪽, ISBN 978-1-59059-410-0, 2009년 7월 5일에 원본 문서에서 보존된 문서, 2009년 9월 4일에 확인함
- Cole, Jim; D. Gradecki, Joseph (2003년 7월 16일), 《Mastering Apache Velocity》 1판, Wiley, 372쪽, ISBN 978-0-471-45794-7, 2012년 10월 7일에 원본 문서에서 보존된 문서, 2009년 9월 4일에 확인함