본문 바로가기
Study Progamming/Spring

[ 스프링 부트 코딩 공작소 ] 스프링의 새로운 시작

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


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

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



- 1장 스프링 시작하기 -

스프링의 새로운 시작



  • 스프링[각주:1]은 는 JEE[각주:2]J2EE[각주:3]로 알려진 자바 엔터프라이즈 에디션[각주:4]을 경량화하려는 대안으로 시작했었다.
  • 스프링은 무거운 엔터프라이즈 자바 빈[각주:5]으로 컴포넌트[각주:6]를 개발하는 대신 의존성 주입[각주:7]관점 지향 프로그래밍[각주:8]를 활용해서 EJB의 기능을 평법한 자바 객체[각주:9]로 구현할 수 있게 하여 간단하게 엔터프라이즈 자바 개발에 접근할 수 있는 방법을 제공했다.
  • 컴포넌트 코드[각주:10] 작성은 가벼웠으나 개발 구성은 무거웠다.
  • 초기 스프링은 구성에 필요한 XML[각주:11] 코드가 많았다.
  • 이를 극복하려고 스프링 2.5는 애너테이션[각주:12]을 기반으로 한 컴포너트 검색 기능을 도입했고, 애플리케이션 컴포넌트에 필요한 명시적 XML 구성을 상당 부분 제거 했다.
  • 스프링 3.0에서는 XML 대신 타입 세이프[각주:13] 하고 리팩토링이 가능한 자바 기반의 구성을 도입했다.


  • 그러나 이런 노력에도 여전히 스프링은 복잡한 구성에서 벗어나지 못했다.
  • 트랜잭션[각주:14] 관리와 스프링 MVC[각주:15] 과 같은 기능을 사용하려면 명시적인 XML 이나 자바 구성이 필요했다.
  • Thymeleaf[각주:16] 기반의 웹 뷰 같은 서드파티 라이브러리[각주:17] 기능을 사용할 때도 명시적인 구성이 필요헀다.
  • 스프링의 DispatcherServlet[각주:18] 등 서블릿[각주:19]이나 필터[각주:20]를 구성하려면 web.xml이나 서블릿 초기화 객체에 명시적인 구성이 필요했다.
  • 컴포넌트 검색은 구성을 줄여 주고, 자바 기반 구성은 좀 더 쉽게 스프링 구성을 할 수 있게 했다.
  • 그럼에도 스프링은 여전히 해야 할 구성이 많았다.


  • 모든 구성 작업은 개발 저항으로 나타난다. 애플리케이션 로직 작성 대신 구성 작업에 쓰는 시간은 모두 낭비다.
  • 스프링 기능 구성에 정신이 팔리면 비지니스 문제를 해결하는 데 방해가 된다.
  • 다른 프레임워크처럼 스프링은 많은 일을 대신 처리하지만, 그 대가로 여러분이 해야 할 일도 늘어 난다.


  • 게다가 프로젝트 의존성 관리는 태가 나지 않는 일이다.
  • 어떤 라이브러리를 프로젝트 빌드에 포함 해야 하는지 결정하는 일은 까다롭기까지 하다.
  • 더 좋지 않은 사실은 프로젝트에 포함한 라이브러리의 어떤 버전이 다른 라이브러리와 잘 작동하는지 알아내가가 어렵다는 것이다.


  • 의존성 관리는 중요한 문제이지만, 또 다른 저항이 된다.
  • 빌드에 의존 라이브러리를 추라하는 일은 애플리케이션 코드를 작성하는 일이 아니다.
  • 의존 라이브러리의 버전을 잘못 선택해서 발생하는 모든 호환성 문제는 생산성을 망치는 주범이다.
  • 스프링 부트는 이것을 모두 바꾸어 놓았다.



  1. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Spring Framework
  2. 2017/12/29 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Java EE
  3. 2017/12/29 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Java EE
  4. 2017/12/29 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Java EE
  5. 2018/01/02 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] EJB
  6. 2018/01/02 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Component
  7. 2017/12/29 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Dependency Injection
  8. 2018/01/02 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] AOP
  9. 2018/01/02 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] POJO
  10. 2018/01/02 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Component
  11. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] XML
  12. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Spring Annotation
  13. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Type-safe
  14. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Transaction
  15. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Spring Framework
  16. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Thymeleaf
  17. https://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=238882
  18. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] DispatcherServlet
  19. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Java Servlet
  20. 2018/01/03 - [Learn IT Knowledge/Computer Science] - [ 전공 지식 ] Java Filter


  1. 스프링 : Spring Framework [본문으로]
  2. java EE : Java Enterprise Edition, Java Platform [본문으로]
  3. J2EE : JEE의 이전 버전 [본문으로]
  4. 자바 엔터프라이즈 에디션 : Java Enterprise Edition, Java Platform, Java EE [본문으로]
  5. 엔터프라이즈 자바 빈 : Enterprise Java Beans, EJB [본문으로]
  6. 컴포넌트 : Component [본문으로]
  7. 의존성 주입 : Dependency Injection, DI [본문으로]
  8. 관점 지향 프로그래밍 : Aspect-Oriented Programming, AOP [본문으로]
  9. 평법한 자바 객체 : Plain Old Java Objects, POJO [본문으로]
  10. 컴포넌트 코드 : Component Code [본문으로]
  11. XML : Extensible Markup Language [본문으로]
  12. 애너테이션 : Spring Annotation [본문으로]
  13. 타입 세이프 : Type-safe [본문으로]
  14. 트랜잭션 : Transaction [본문으로]
  15. 스프링 MVC : Spring MVC, Spring Framework MVC [본문으로]
  16. Thymeleaf : java 라이브러리, 테블릿 엔진 [본문으로]
  17. 서드파티 라이브러리 : third-party library, 제 3자의 라이브러리 [본문으로]
  18. DispatchrServlet : Spring MVC Framework의 유일한 Front Controller [본문으로]
  19. 서블릿 : Java Servlet [본문으로]
  20. 필터 : Java Filter [본문으로]