Spring boot 시작하기

1 분 소요

스프링 부트로 오기까지

스프링은 자바 엔터프라이즈 에디션을 경량화하려는 대안으로 시작함

EJB로 컴포넌트를 개발하지 않고 의존성 주입 및 관점지향 프로그램잉으로 평범한 자바 객체(POJO)로 구현을 간단하게 할 수 있게됨

컴포넌트 개발은 가벼웠지만 개발 구성은 복잡해짐 (XML코드에 의존성을 작성해야 했음)

이를 극복하기 위해 2.5에서 어노테이션 기반으로 컴포넌트를 검색하기 위한 기능이 도입됨. 이때 컴포턴으에 필요한 명시적인 XML구성이 많이 줄어듬

그런데도 스프링은 복잡한 구성에서 벗어나기 어려웠음. 트랜젝션 관리 및 스프링 MVC는 명시적인 XML, 자바구성이 필요했음.

예를 들어 스프링의 DispatcherServlet등 서블릿 필터를 구성하려면 web.xml에 명시적으로 구성을 해야 함.

컴포넌트 검색 기능으로 많이 명시적인 코드가 줄어 들었지만 여전히 복잡한 구성이 필요했음.

결국 프레임워크가 많은 기능을 처리해 주지만 여전히 구성해야 하는 부분이 많고 프로젝트 구성에 많은 시간이 필요해짐.
라이브러리 의존성 이슈는 생산성을 극도로 저하시킴.

여기서 스프링 부트가 나오는 계기가 됨.

스프링 부트를 살펴보자

간단하게

웹어플리케이션을 개발한다면 기존 스프링으로는 어떻게 준비해야 하나?

  • Maven에 필요한 dependency 작성
  • web.xml에 DispatcherServlet 선언
  • MVC를 사용할 수 있게 구성(Controller는 뭐고,View는 뭐고 등등등)
  • WAS서버 준비
  • 이제 시작해 볼까? 에러 발생? 에러잡고 등등 (여기서 반나절 또는 하루정도는 걸림 ㅋㅋ)

위에서 컨트롤러 작성을 제외하고는 보일러플레이트 구성임. 간단히 템플릿을 구성하는 업무라고 해야 하나? 이건 뭔가 불편하다. 그리고 개발보다 구성하는데 시간이 쏠쏠히 걸린다.

스프링 부트 핵심 살펴보자

역시 간단하게

  • 자동구성

    구성해야 하는 어플리케이션 기능을 자동으로 구성한다.
    클래스 패스에 있으면 빈으로 등록하여 Biz 클래스에 언제든 주입할 준비를 시켜줌.

  • 스타터 의존성

    기능만 말해주면 알아서 필요한 라이브러리를 빌드에 추가함.
    spring-boot-starter-web만 디펜던시에 추가했지만 필요한 라이브러리(core,web,webmvc,tomcat,jacson-databind,hibernate-validator등)가 의존성에 추가됨.

  • 명령줄 인터페이스

    코드만 작성해도 구동할 수도 있다.
    잘 쓰는지는 모르지만 스프링 부트 CLI 기능.

  • 액추에이터

    부트 내부에서 뭔 짖거리를 하는지 내부를 볼수도 있음.
    자동구성은 어떻게 되었는지? 환경변수,쓰레드 상태, 리소스 등.

스프링 부트 시작하기

IDE로 할 수도 있지만 Spring Initializer로 구성해 보자 http://start.spring.io 에서 프로젝트를 제너레이터 해보자. 디펜던시에 라이브러리가 아닌 기능을 추가하여 생성하면 끝 mvnw를 이용하면 Maven도 필요 없다. 알아서 다운로드 해준다.

카테고리:

업데이트: