Category Archives: 허접프로그래머

Spring Boot CLI 맥 환경에 설치하기

Spring Boot

스프링부트를 이용하면 스프링 기반인 프로덕션 수준의 어플리케이션과 서비스를 최소한의 복잡함으로 만들 수 있습니다. 스프링 플랫폼의 컨셉을 그대로 가지고 있으며 새로운 또는 기존의 유저들이 쉽게 접할 수 있습니다.

스프링부트를 이용하여 java -jar 를 사용하는 stand-alone 자바 어플리케이션을 구동할 수 있으며 기존의 전통적인 방식의 WAR 디플로이 방식또한 사용할 수 있습니다. 스프링 스크립트를 작동하기 위한 커맨드라인 툴도 제공합니다.

스프링부트의 주 목적은 다음과 같습니다.

  • 모든 스프링 개발을 위한 근본적으로 더 빠르고 폭넓은 시작 경험을 제공
  • 기존의 스프링의 특징을 고수하지만 요구사항의 변동에 빠르게 대응할 수 있도록 함
  • 큰 규모의 프로젝트에서 사용되는 비-기능적인 범위(임베디드 서버, 보안, 통계, 상태체크, 외부화된 설정)를 제공
  • 코드 생성과 XML 설정이 전혀 필요 없음

Spring Boot CLI

스프링부트 CLI는 스프링을 이용한 프로토타입을 빠르게 만들 수 있도록 해주는 커맨드라인 툴 입니다. 이 툴은 자바 문법과 유사한 Groovy 스크립트를 실행시킬 수 있습니다. 스프링부트를 사용함에 있어서 CLI는 필수사항은 아닙니다.

커맨드라인 툴을 이용하기 위해서는 1.6 버전 이상의 Java SDK가 필요합니다. (현재 openjdk 1.7.0_25에서 약간의 이슈가 있기에 그 이전버전이나 1.6을 권장함) 다음의 명령을 사용하여 현재 설치되어있는 Java의 버전을 확인하도록 합시다.

$ java -version

이 글에서는 Homebrew를 사용하는 OSX 환경에서의 설치를 가정하고 내용을 진행합니다. 당연히 Homebrew가 설치된 맥이 있어야 합니다. 다음의 명령을 사용하여 설치를 진행합니다.

$ brew update
$ brew tap pivotal/tap
$ brew install springboot

Homebrew는 spring을 /usr/local/bin 이하에 설치하게 됩니다. 테스트를 위해 정말 간단한 웹 어플리케이션을 작성해 보겠습니다. 파일이름은 app.groovy로 합니다.

@Controller
class ThisWillActuallyRun {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!"
    }

}

이제 다음과 같은 명령어로 실행을 합니다.

$ spring run app.groovy

이제 사용하시는 브라우저를 통해 http://localhost:8080으로 접속해 보시면 다음과 같은 내용을 확인할 수 있습니다.

Hello World!

참고 : https://github.com/spring-projects/spring-boot

Git Pull시에 자동으로 Rebase적용하기

이번글은 git pull시에 rebase를 사용할것인지 말것인지에 대한 이야기는 아닙니다. 프로젝트를 진행하다 보니 일반적으로 많은 분들이 일직선의 커밋 히스토리를 선호하시는것을 알게 되었습니다. 일반적으로 merge를 통해 만들어진 히스토리는 복잡하고 이해하기가 쉽지 않습니다. rebase를 이용하여 pull을 하여 만들어진 히스토리를 직관적입니다. 예를 들어 다음과 같은 작업은 소스코드의 머지를 발생시킵니다.

  1. git pull (로컬의 소스를 최신으로 업데이트하기 위해 수행)
  2. 개발을 진행
  3. git commit
  4. git pull
  5. git push

기본적으로 git pull은 리모트로부터 새로운 커밋들을 가져옵니다. 그리고 로컬의 코드들에 머지(merge)를 합니다. 이러한 과정이 일명 머지버블(merge bubble)을 발생시킵니다. 좀 더 개선을 위해 git pull 대신에 git pull –rebase 명령을 사용하는것을 생각해 볼 수 있습니다. 이 명령은 리모트로부터 가져온 커밋들 뒤에 새로운 나의 커밋들을 추가합니다.

rebase_5

여러분의 git가 pull시에 기본적으로 merge를 사용하지 않고 rebase를 선택하도록 설정할 수 있습니다. 다음의 명령은 이후의 모든 브랜치들에 대해 기본적으로 rebase를 하도록 합니다.

$ git config --global branch.autosetuprebase always

하지만  위의 명령은 이미 개발중인 브랜치에는 적용되지 않습니다. 이미 개발중인 브랜치에는 다음과 같은 명령으로 적용할 수 있습니다. (적용하려는 프로젝트 루트 디렉토리에서 수행합시다)

$ git config branch.{BRANCH-NAME}.rebase true

{BRANCH-NAME} 대신에 master와 같은 여러분이 적용하고자 하는 적절한 브랜치명을 적어주시면 됩니다.