[Spring] Gradle을 위한 Groovy 문법 요약정리

2019. 4. 18. 13:29Web/Spring

[Spring] Gradle을 위한 Groovy 문법 요약정리


Groovy

Groovy 실행원리

그루비 소스는 컴파일하면 자바 클래스가 만들어진다. 이것을 실행하기 위해서는 groovy.jar와 asm.jar 라이브러리 파일이 필요하다.

Groovy 문법 요약

변수 선언과 값 할당

  • 동적 타입 바인딩
def a = 20    // 값을 할당할 때 a 변수의 타입이 결정됨
a = "문자열"    // 다른 값을 할당하면 변수의 타입이 바뀜
b = "문자열"    // 변수 선언 시 def를 생략해도 됨
  • 정적 타입 바인딩
int a = 20    // 변수 a는 int로 데이터형이 고정됨
a = "문자열"    //문자열 값을 할당하면 오류 발생
  • 문자열과 자동 형변환
String a = "문자열"    // 변수 a는 String으로 데이터 형이 고정됨
a = 20    // 정수 값 20이 문자열 "20"으로 자동 변환된 후 변수 a에 할당됨
  • 자바 변수 선언
java.util.Date a = new java.util.Date()    // 자바 문법 사용 가능
Date b = new Date()    // 기본으로 java.util 패키지 임포트됨

리스트와 맵 데이터 다루기

  • 리스트 데이터 할당과 사용
scoreList = [90, 80, 100, 87]    //ArrayList 객체가 생성됨
println scoreList[2]    // 배열처럼 사용할 수 있음
println scoreList.get(2)    // 원래대로 ArrayList의 get() 호출 가능
println scoreLIst.size()    // 결과는 4
nameList = ["홍길동", "임꺽정", "장보고"]
println nameList[1]
emptyList = []    //빈 리스트 생성
  • 맵 데이터 할당과 사용
scoreMap = ["국어":100, "영어":90, "수학":100, "사회":89]
println scoreMap["수학"]    // 변수.[키] 형태로 값 추출
println scoreMap.수학    // 변수.키 형태로 값 추출
println scoreMap.getClass()    // java.util.LinkedHashMap 출력
scoreMap.수학 = 93    // 맵의 값 변경
println scoreMap.수학    // 결과는 93
emptyMap = [:]    //빈 맵 생성

분기문

  • if - else 문
if (true 또는 false 조건) {
...
} else if ( ... ) {
...
} else {
...
}
  • 조건 연산자
age = 17
title = (age < 19) ?
        "청소년" : "성인"
  • switch 문
x = "aaa"
result = ""
switch(x) {
case "aaa": result = "aaa"
case "123": result += "123"
case [1,20,3.14, true]:
 result = "숫자,문자열,참거짓 값"
 break
case 100..200:
 result = "100 ~ 200 값"; break
case Number:
 result = "기타 숫자 값"; break
default:
 result = "기타"
}
println result

그루비의 switch문은 자바와 달리 숫자나 문자열 외에 실수, 불린, 객체도 다룰 수 있다.


반복문

  • while 문
while (조건) { ... }
  • for 문
for (int i = 0; i < 5; i++) {}
for (i in 0..9) {}
for (i in [100, 90, 95, 80]) {}
for (i in 배열) {}
for (entry in 맵) {}
for (c in 문자열) {}

목록.each({ ... })
맵.each({key, value -> ... })
목록.eachWithIndex({obj,i -> ... })
맵.eachWithIndex({obj, i -> ...})

메서드와 클로저

  • 메서드 정의
def plus(a, b) {
    a + b
}
int minus(int a, int b) {
    return a - b
}
  • 클로저 정의
plus = {a, b ->
    a + b
}
println plus(10, 20)
plus = {int a, int b ->
    return a + b
}
  • 클로저 Free 변수
pi = 3.14159
getCircleArea = {radius ->
    //pi는 'free' 변수
    pi * radius * radius
}
  • 클로저 it 파라미터
plus = {
    it[0] + it[1]
}
println plus([10, 20])
  • 클로저 리턴 값
plus = { a, b ->
    a + b    // 마지막 문장의 실행값
}
// return 을 사용해도 됨
// 마지막 문장의 실행값이 없으면 null

클래스

  • 기본으로 임포트(import)하는 패키지
java.lang, java.io, java.math, java.net, java.util, groovy.lang, groovy.util
  • 클래스 정의와 사용
class Test {
    void hello() {
        println "안녕하세요!"
    }
}
t = new Test()
t.hello()
  • 프로퍼티 선언과 사용
Class Student {
    Integer no
    String name
    Date regDate
}
s = new Student(no:1, name:"홍길동", regDate:new Date())
println s.no + "," + s.name + "," + s.regDate

String과 GString

  • 문자열 표현 ", ', /
println "I like 'groovy'."
println 'I like "groovy"."
println (/I like "groovy"./)
  • 멀티 라인 문자열
intro = """ Hi, My name is J.
 I am teaching Groovy script.
 Let's go Groovy Programming."""
  • GString
name = "jinyoung"
println "Hi. $name."
println "Hi. \$name."
  • GString과 String
str1 = "Jinyoung"
str2 = "My name is $str1"
str3 = str1 + str2
assert str1 instanceof String
assert str2 instanceof GString
assert str3 instanceof String
  • Gstring과 Closure
now = new Date()
str1 = "일반객체: $now 입니다."
str2 = "파라미터 없는 클로저: $(new Date()}"
str3 = "파라미터 있는 클로저: $(wrtier -> wrtier << new Date()}"


'Web > Spring' 카테고리의 다른 글

[Spring] IntelliJ에서 Spring + Maven 프로젝트 생성하기  (0) 2019.04.09