예전에 깃헙 프로젝트의 파일을 보려고 할 때는 보려고 하는 파일이 존재하는 위치까지 클릭클릭으로 찾아 들어갔다. 그런데 그럴 필요가 없었다.

프로젝트 내에서 [T] 키만 누르면 'File Finder'로 전환되면서 입력하는 이름에 부합하는 파일들을 검색하는 기능을 발견했다.

내 프로젝트에서 간단하게 'build.gr' 라고 입력하여 검색한 결과다. 깃헙 프로젝트에서 파일 찾으려고 고생하지 말자.


Gradle에서 참조표현(Reference expression, ${variable}) 사용하기

요즘 이해력이 많이 딸린다. 하아.
역시 책과 레퍼런스를 살펴보는 것이 제일 좋군.

groovy를 기반으로 작성되는 대부분의 문자열은 작은 따옴표(‘’)를 사용한다. 이 문자열은 GString을 사용할 수 없다.

이 내용이 나의 삽질을 야기시켰다.

ext {
    versions = [
      springframework: '4.0.3.RELEASE'
    ]
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.5'
    compile 'org.springframework:spring-core:${versions.springframework}'
    testCompile 'junit:junit:4.11'
}

위의 내용으로 작성하면 어떻게 될까?

$ gradle dependencies

문제가 생긴다. ㅡ_-)> 화면에서 보는 것처럼, 내가 생각했던 것과는 다르게 ${versions.springframework}에 ‘4.0.3.RELEASE’가 주입되지 않는다. 그냥 문자열 그대로 나온다.

왜 그런거냐!!!

라고 분노하며 내팽개쳤다가 최근에 다시 꺼내어 살펴보았다. 이제는 마음의 여유가 있는지라 왜 그런지 경우를 하나하나 살펴봤다.

사실, 참고서적과 API를 봤다면 수월하게 이해하고 넘어갔을 텐데… 지금까지도 남아있는 일단 실행해보고 보자.

라는 안일함이 나의 시간을 허비 시켰다. 허어…

Groovy and GString 을 살펴보면 GString이라고 하는 항목을 볼 수 있다. 이 GString이 적용되는 것은 큰 따옴표(“”)에 사용했을 때다.

하아… 바보다.

ext {
    versions = [
      springframework: '4.0.3.RELEASE'
    ]
}

dependencies {
    compile 'org.slf4j:slf4j-api:1.7.5'
    compile "org.springframework:spring-core:${versions.springframework}"
    testCompile 'junit:junit:4.11'
}


잊지말자!

참조표현(${})를 사용하기 위해서는 큰 따옴표(“”)를 이용해서 문자열을 선언해야 GString으로 인식되어 처리한다는 것을!!


[File - New - Spring Starter Project]를 선택하면 다음의 창이 뜬다. 

다음[Next]을 누르면 spring starter를 다운로드 받는다. Spring Boot를 이용해서 starter 프로젝트를 다운로드 받고 프로젝트를 구성한다.

 


이 spring-starter의 핵심은 @EnableAutoConfiguration 이다.

이 Spring starter 의 핵심은 @EnableAutoConfiguration 이지 싶다. 프로젝트에 사용되는 @Annotation의 타입을 스캔해서 관련된 라이브러리를 자동으로 추가하여 구동시키는 것으로 보여진다. 오늘 잠깐 살펴보며 짐작한 것은 그렇다.

[Run as - Spring Boot App]을 선택하면 자동으로 실행된다.


spring.io에서 Spring을 이해할 수 있도록 잘 작성된 가이드를 제공한다.

STS 자체에서도 spring.io/guide에서 제공하는 콘텐츠들을 바로 다운로드 받아서 열어볼 수 있는 기능을 제공한다.


1. 사용방법은 [File - New - Import Spring Getting Started Content]를 선택한다.

2. 자신이 받고 싶은 튜토리얼을 선택한다. 이때, 비동기식으로 선택받은 프로젝트를 다운로드 받는 과정을 진행하기 때문에, 하단에 있는 [Finish] 버튼이 바로 활성화되지는 않으니 잠시 기다린다. 'Maven'이나 'Gradle' 중 하나를 선택하면 되는데, 몇몇 프로젝트들은 build.gradle 파일이 존재하지 않는다는 메시지와 함께 [Finish] 버튼이 비활성화된다.


3. 선택한 튜토리얼 다운로드가 끝나고 나면 프로젝트가 임포트import 되고 내부 브라우저창으로 해당 튜토리얼관련 페이지가 뜬다.


이렇게 간단하게 스프링과 관련된 튜토리얼을 다운로드 받고 살펴볼 수 있다. 최근에 작성된 프로젝트의 경우에는 Spring boot를 이용해서 바로 실행가능한 형태를 취하고 있다.



프로그래밍 그루비

저자
디에크 쾨니히, 기욤 라포르쥬, 앤드루 글러버, 폴킹, 존 스킷 지음
출판사
인사이트 | 2009-03-02 출간
카테고리
컴퓨터/IT
책소개
프로그래밍 그루비 는 그루비의 문법과 사용하는 법을 이해하기 쉽...
가격비교 글쓴이 평점  

짬짬이 그루비Groovy를 살펴보기 시작했다. 순 그레들gradle을 능숙하게 다루기 위한 목적으로 살펴보고 있는데,
그루비가 가지고 있는 매력도 상당하다.

Type plus(Type type) {} 를 재정의하니까 다른 형태로 동작한다.

package kr.pe.ihoney.groovy.study.begin

class Money {
    private int amount
    private String currency

    Money(int amount, String currency) {
        this.amount = amount;
        this.currency = currency;
    }

    /**
     * 재정의된 plus(+) 연산자
     * @param other
     * @return
     */
    Money plus(Money other) {
        assert null != other
        if(other.currency != currency)
            throw new IllegalArgumentException("Cannot add $other.currency to $currency");

        return new Money(amount + other.amount, currency);
    }

    @Override
    public int hashCode() {
        amount.hashCode() + currency.hashCode()
    }

    @Override
    public boolean equals(Object other) {
        if(null == other) return false
        if(!(other instanceof Money)) return false
        if(currency != other.currency) return false
        if(amount != other.amount) return false
        return true
    }
}
package kr.pe.ihoney.groovy.study.begin;

import static org.junit.Assert.*;

import org.junit.Test;

class MoneyTest {

    Money money

    @Test
    public void test() {
        def bulk = new Money(1000, "WON")
        assert bulk
        assert bulk == new Money(1000, "WON") //재정의된 ==(equals) 연산자 사용
        assert bulk + bulk == new Money(2000, "WON") // 재정의된 +(plus) 연산자 사용
    }

}


+ Recent posts