본문 바로가기
Study Progamming/Spring

[ 스프링 부트 코딩 공작소 ] 스프링의 새로운 모습 살펴보기

by ${코딩몬} 2018. 1. 11.


종류 : 대학교 소장 도서
제목 : 스프링 부트 코딩 공작소
저자 : 크레이 월즈
옯김 : 황인서
소개 : 2017/12/29 - [Study Progamming/Spring] - [ 스프링 부트 코딩 공작소 ] 정리를 시작하며

단지 공부의 목적으로 해당 도서 및 자료를 정리해둔 것입니다.



- 1장 스프링 시작하기 -

스프링의 새로운 모습 살펴보기



  • 스프링으로 아주 간단한 Hello World 웹 애플리케이션을 개발한다고 하자. 
  • 무엇이 필요할까? 최소한 다음 항목은 필요하다.
    • 필요한 의존성을 비롯한 메이븐[각주:1]이나 그레이들[각주:2] 빌드 파일이 완비된 프로젝트 구조
    • 스프링의 DispatcherServlet[각주:7]을 선언한 web.xml 파일 또는 WebApplicationInitializer[각주:8] 구현
    • 스프링 MVC를 사용할 수 있는 스프링 구성
    • HTTP[각주:9] 요청에 "Hello World"라고 응답할 컴트롤러 클래스
    • 애플리케이션을 배포할 웹 애플리케이션 서버[각주:10](톰캣 등)

  • 이 목록에서 가장 눈에 띄는 것은 Hello World 기능을 개발하는 데 특화된 '컨트롤러' 하나 뿐이다.
  • 나머지 항목은 스프링으로 웹 애플리케이션을 개발할 때 필요한 일반적인 보일러플래이트[각주:11]다.
  • 모든 스프링 웹 애플리케이션에 이런 것이 필요하다면 왜 개발자가 별도로 준비해야 할까?


  • 컨트롤러만 필요하다고 가정해 보자.
  • 아래 코드에서 그루비 기반의 컨트롤러 클래스는 간단하지만 하나의 완전한 스프링 애플리케이션이 된다.
    • 1
      2
      3
      4
      5
      6
      7
      @RestController
      class HelloController {
          @RequestMapping("/")
          def hello() {
              return "Hello World";
          }
      }
      cs
       

 

  • 스프링 구성이 없다.
  • web.xml도, 빌드 명세도 없다.
  • 심지어 애플리케이션 서버조차 없다.
  • 이것이 애플리케이션의 전부다
  • 애플리케이션을 실행하는 복잡한 과정은 스프링 부트가 처리한다.
  • 개발자는 애플리케이션 코드만 작성하면된다.


  • 스프링 부트 명령줄 인터페이스[각주:12](CLI)를 설치했다면 HelloController를 명령줄에서 실행 할 수 있다.
  • 1
    $ spring run HelloController.groovy
    cs


  • 또 코드를 컴파일할 필요조차 없다는 것을 눈치챘을 것이다.
  • 스프링 부트 CLI는 코드를 컴파일하지 않아도 실행할 수 있다.


  • 예제에서는 스프링 부트와 그루비[각주:13] 언어의 간결함을 잘 보여 주려고 컨트롤러를 그루비로 작성했다.
  • 그렇다고 스프링 부트에서 반드시 그루비를 사용해야 하는 것은 아니다.
  • 사실 책에서 작성할 코드는 대부분 자바다.
  • 하지만 몇군데 필요한 곳에는 그루비로 된 코드가 등장할 것이다.



  1. 2018/01/05 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Maven

  2. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Spring Framework
  3. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Spring Framework
  4. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Java Servlet
  5. 2017/12/29 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Dependency Injection
  6. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] DispatcherServlet
  7. 2018/01/08 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] HTTP


  8.  


  1. 메이븐 : Apache Maven, 자바용 프로젝트 관리 도구이다. [본문으로]
  2. 그레이들 : [본문으로]
  3. 스프링 : Spring Framework, 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다. [본문으로]
  4. 스프링 MVC : Spring MVC, 스프링 웹 프로그램밍 개발 시 거의 표준적인 방식인 모델-뷰-컨트롤러(MVC) 패턴 [본문으로]
  5. 서블릿 : Java Servlet, 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. [본문으로]
  6. 의존성 주입 : Dependency Injection, DI, 프로그래밍에서 구성요소간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인 패턴 중의 하나이다. [본문으로]
  7. DispatcherServlet : [본문으로]
  8. WebApplicationInitializer : [본문으로]
  9. HTTP : Hypertext Transfer Protocol, web-browser(브라우저)같은 응용프로그램을 통해 web-client(사용자)와 web-server(서비스제공자)사이 데이터를 전솧하는 프로토콜 [본문으로]
  10. 웹 어플리케이션 서버 : [본문으로]
  11. 보일러플레이트 : [본문으로]
  12. 명령줄 인터페이스 : [본문으로]
  13. 그루비 : [본문으로]