본문 바로가기

Script/Groovy

(17)
17. Rest 이번에는 Groovy 에서 제공하는 Rest 기능에 대해 알아보자. HTTP Verbs Request And Response HTTP Status Code HTTP Builder HTTP Builder 가 있으며 Groovy 에선 이 클래스를 이용하면 쉽게 Rest Call 을 할 수 있다. 아래 웹 사이트는 Rest Call 테스트를 위한 페이지를 제공한다. http://www.icndb.com/api/ 이를 HTTP Builder 에서 제공해 주는 다양한 API 와 함께 테스트 해 볼수 있다. https://github.com/jgritman/httpbuilder https://github.com/jgritman/httpbuilder/wiki https://github.com/jgritman/http..
16. Builder Groovy 에서는 XML, JSON, HTML 등의 Markup 언어에 대한 Builder 를 제공하여 이를 쉽게 만들수 있으며 반대로 Parser 도 제공하여 해당 언어를 Groovy 에서 쉽게 파싱하여 사용하도록 하고 있다. 이번장에서는 이와 관련된 몇개의 빌더에 대해 알아보도록 하자. http://groovy-lang.org/api.html XML 간단히 아래와 같이 입력하면 XML 이 뚝딱 만들어진다. JAVA 나 다른 언어에 비해 표현이 아주 쉽다. 아래 예에서는 기본 생성자로 만들었지만 생성자에 FileStream 등을 파라미터로 값으로 주면 출력 대상으로 지정할 수 있다. 다른 유용한 테스트는 아래 사이트를 통해 확인하자. https://github.com/apache/groovy/tree..
15. MOP - Compile Time 앞서 MOP 는 런타임과 컴파일 타임으로 구분되며 컴파일 타임 MOP 는 Groovy 어노테이션인 AST Transform 을 가리킨다고 하였다. 이번 장에서는 AST Transform 을 만드는 것보다 기본적으로 제공되는 여러 어노테이션들을 살펴보도록 하자. 각 어노테이션의 상세 사용법은 아래 페이지를 참조하여 검색하자. http://groovy-lang.org/api.html @ToString 기본형으로 @ToString 어노테이션을 사용해도 되는데 이 경우는 아래와 같이 클래스명(입력데이터들) 형식으로 나온다. import groovy.transform.ToString @ToString class Customer { String first, last int age Date since = new Da..
14. MOP - Runtime MOP (Meta-Object-Protocol) 는 메소드 호출에 대한 요청이 Groovy 런타임 시스템에서 처리되는 방법과 중간 계층을 제어하는 방법에 대한 규칙 모음이다. https://www.slideshare.net/AliTanwir/metaprogramming-with-groovy-64544282 보통 MOP 는 런타임과 컴파일 타임에서 사용되는 형식이 다르며 컴파일 타임 MOP 는 어노테이션 파트로 https://groovy-lang.org/metaprogramming.html 다음장에서 살펴보자. POGO Groovy 는 오브젝트를 크게 3가지 오브젝트로 분할하여 관리한다. 이중 GroovyObject 인터페이스를 구현한 클래스를 POGO 오브젝트라고 한다. 통상 Groovy 로 선언한 모든..
13. OOP JAVA 에 비해서 Groovy 의 Class 는 상대적으로 쉽고 간단히 Class 를 생성할 수 있다. Class 일단 Groovy 의 class 에서는 public private 를 넣지 않는데 Groovy 의 모든 클래스는 public 이다. 필요하다면 private 을 넣어 선언해도 상관없으므로 private 클래스인 경우에는 private 을 넣으면 된다. class Person { } public class Person implements GroovyObject { @Generated public Person() { CallSite[] var1 = $getCallSiteArray(); super(); MetaClass var2 = this.$getStaticMetaClass(); this.me..
12. Exception Exception 은 Java 와 비슷하지만 throws 를 따로 작성하지 않아도 된다. // Exception /* public void foo() throws Exception{ throw new Exception() } */ def foo() { throw new Exception("Foo Exception") } List log = [] try { foo() } catch (Exception e) { log
11. Conditional Statement 이번에는 Groovy 에서 사용되는 제어문들에 대해 알아보자. Boolean 데이터 타입에 따라 true / false 로 판단할 수 있는 기준이 다르다. 기본 타입을 제외하면 null 체크가 된다. If statement java 에서 사용되는 if ~ else if ~ else 를 그대로 사용한다. //-------------------------------------------- // if 제어문 // if(boolean expression} {//logic} //-------------------------------------------- if(true){ println "true" } def age = 35 if( age > 5 && age = numbers.size()) { break } p..
10. Closures http://groovy-lang.org/closures.html 그루비 클로저는 이름없는 메서드에 대한 포인터에 해당하며 함수를 함수 포인터에 저장하는것에 불과하다. 클로저 정의는 중괄호 { } 를 이용해서 하며 호출시는 .call() 또는 일반 메서드 처럼 ( ) 으로 실행할 수 있다. Groovy 에서는 아주 많은 부분에서 클로저를 사용하기 때문에 반드시 알고 활용할 수 있어야 한다. Basic def c = {} println c.class.name Test$_run_closure1 def exMap = [:] def exClosure = { println "Hello" } exMap.closureProp = exClosure exMap.closureProp() Hello 기본적으로 함수와 비슷하..