본문 바로가기

book

스프링 코딩 공작소

국내에 스프링 관련 책은 많이 출간되었습니다.

일반적인 많이 사용하지 않는 기술에서는 버전업이 된다고 해도, 지속적으로 새로운 책이 출간되지 않습니다.

하지만, 스프링은 국내 java기반으로 서비스를 하는 곳에서 많이 사용하기 때문에 현재도 다양한 책이 신간으로 나오고 개정판이 나옵니다.

 

이책에 저의생각을 3줄요약을 미리 하려고 합니다.

· 기존에 SpringBoot가 아닌 Spring으로 서비스가 개발된 소스를 유지보수, 개발하시면 많은 도움이 됩니다.

· Spring에 대해서 조금 더 원리를 알수 있습니다.

· maven, log4j, 인터넵터, web.xml 등 많이 사용하지만 조금 더 학습하고자 하시는 분들에게 도움이 됩니다.

 

 

 책을 고르기가 너무 힘든 경우가 있습니다.

스프링 책도 있고 스프링부트 책도 있습니다. 만약 스프링 부트를 공부하고 싶은 분이나, 회사에서 스프링 부트 환경으로 개발을 하시는 

경우에는 스프링책으로 학습하거나 필요가 없는 것일까요?

결론부터 말씀드리면, 그렇지 않다고 생각합니다. 스프링 책으로 학습이 필요하다고 생각합니다.

 

최초 스프링으로 개발이 되어 오면서 추후 스프링 부트가 나왔습니다.

예전에는 책에도 언급된것 처럼 스프링, WAS등을 개별로 구성하여서 서비스 환경을 구축하였습니다.

하지만 현재는 스프링부트로 예전에 스프링에서 환경구성 및 Framework을 사용하는데 불편하다고 하는 부분이 개선되어서

스프링부터가 나온것이고, 스프링부트의 핵심은 스프링에 있습니다.

스프링책과 스프링부트의 책이 다른책이 아니라고 생각합니다.

스프링부트 책에서도 Bean에 대해서 다루고 다양한 @Annotation에 대해서 다룹니다.

이책은 스프링에 대해서 조금 더 "원론적이고, 기본적인 동작방식에 대해서" 다루기 때문에, 부트를 사용하시는 분들도 충분히 도움을 받을수 있는 책입니다.

 

python의 pip로 설치하는 환경, node에서 install등 다양한 언어에서 조금더 편하게 개발 환경을 구성하기 위한 방향으로 정확히 1:1로 비유할수는 없지만, springboot가 나온것이라고 생각하시면 편합니다.

https://start.spring.io/ 을 통해서 제공하느 initializr는 처음 환경구성하는데, 많은 편리성을 주었기 때문입니다.

 

 

 

 

기술요소 

· spring으로만 기능 개발을 하기 때문에 spring-start-** 라이브러리를 사용하지 않습니다.

· 나머지 기술검증 및 실습은 일반 springboot책과 대부분 비슷합니다.

· 책에서 사용하는 build 관리 툴은 tool은 maven을 사용합니다. maven vs gradle과 비교를 하면서 최근에는 gradle이 더 최신이고
해당 빌드툴을 사용해야지 조금 더 좋은 거라고 생각하실 수 있는데, 각 프로젝트 환경에 맞게 사용하시는게 가장 좋은 방법 같습니다.

 

① 저는 반대로 요즘 책들은 Gradle이 많이 소개 되는데, Maven으로 구성되어 있어서 좋았습니다.

 기존에 구축되어 있는 프로젝트나 서비스들은 SpringBoot가 아닌, Spring으로 개발되어서 유지보수 하는 부분도 많이 있습니다.

③ 스프링을 익히면, 스프링 부트를 조금 더 이해해고 잘 사용할수 있습니다.

 

 

"책을 좋았던 점 몇가지 항목을 기록하려고 합니다
우선 책의 완성도가 매우 높았으며, 저자분이 세세한것까지 안내하고, 소개하려는 부분이 지면을 통해서 알수 있었습니다.
책의 서체나 구성은 쉽게 독자분이 이해하는데 전혀 어려움이 없이 설명되어 지고 있습니다."

 

 

환경설정등에 대해서 구체적으로 설명하는 부분

(checking : springboot에서는 spring에서 설정했는 부분이 없는것 처럼 보입니다.)

① web.xml을 잘 모르시는분

springboot에 root-context.xml파일이 답을 못내리시는 분

③ conponent-scan 들어봤는데, spring vs springboot 비교해보면 명확히 답을 알지 못하시는 분   (https://oingdaddy.tistory.com/254)

④ 인터셉터에 알고 싶으신 분

· 보통 웹서비스를 개발하면 web.xml 이라는 config파일에 대해서 들어보셨을 거라고 생각합니다. SpringBoot에서는 web.xml이라는 파일을 찾을수 없습니다. Spring에서 모든 요청은 "DispatcherServlet"을 통해서 처리가 되는데 SpringBoot에서는 autoconfigure

처리가 되어 있어서 실제 물리적인 파일로 나와 있지는 않습니다.

 

책에서는 web.xml, root-context.xml, servlet-context.xml파일 등을 통해서 Spring의 환경설정을 합니다.

"spring boot 에서 모든 설정(servlet-context, root-context 등)은 application.properties을 통해서 처리가 되는 부분입니다."

 

이책에서는 설정파일에 대해서 대략적으로 소개만 하는것이 아니고, 항목항목별로 상세히 설명되어 있습니다.

화면 캡쳐한 부분은 설명하기 전에 크게 구분한 화면이고, 다음페이지에서는 관련 영역별로 추가 설명이 이루어 집니다.

저는 이 부분이 참 좋았습니다. 보통 신규로 설정하거나, 누군가 미리 설정되어 있는 Config파일을 그대로 유지하면서 다른 기능을 개발하기 마련인데, 이러한 설정파일에 대한 전체적인 내용은 일반적으로 잘 나와 있지 않기 때문입니다.

 

 

 

 

· component-scan에 대한 자동 인식 부분 


· 인터셉터가 환경설정과 관련된 부분은 아니지만, 그러한 역활을 합니다.

한번 설정을 해놓으면, 무조건 정의된 rule로 적용이 되기 때문입니다.

Java을 통한 웹개발을 하는 경우에는 기본적으로 알고 있어야 하는 부분이기도 할 것 같습니다.

두가지 방식이 있는데, HanderInterceptor, HandlerInterceptorApdpter방식 2가지를 모두 설명합니다.

preHandler(), postHandle(), afterCompletion()에 대해서도 활용합니다.

 

 

 

 

Project단위로 계층구조가 잘 표시되어 있습니다.

· 전체적인 프로젝트 구조를 보여줍니다. 

 

· 각 기능에 맞는 java파일을 정의하면서 실습예제를 통해서 조금더 쉽게 개념을 잡게 해줍니다.

Impl이라는 파일명은 Interface를 구현하는 클래스를 보통 지징하는데 많이들 사용합니다.

 

 

 이클립스 사용법 관련

· Spring을 개발하면 IDE를 사용하게 됩니다. Eclipse, IntelliJ, 또는 VSCode에서 플로그인을 많이 개발을 하십니다.

· 이 책에서는 Eclipse를 처음 배우시는 분들에게 Spring을 하면서 반드시 알아야 하는 부분에 대해서 친절히 설명합니다.

책의 중간중간 실습을 하면서, 꼭 필요한 부분이 잘 설명되어 있고 책에 있는 사항은 많이들 기본적으로 사용하는 기능입니다.

 

■ Spring MVC에 대해서 

· 반드시 알고 가야할 DispatcherServlet에 대해서 개념을 확실히 이해하는 과정이 있습니다.

springboot를 사용한다고 DispatcherServlet를 사용하지 않는것이 아니기 때문입니다.

 

 

 태그 라이브러러

· 화면에서 Spring객체를 사용하기 위한 다양한 Tag-Library가 있습니다. 

· 일반적으로 템플릿엔진으로 아래와 같은 사항들이 있고, Thymeleaf같은 것 들도 많이 사용하지만

Spring공식적으로 지원하고 있는 스프링 폼 도 있습니다.

 

 

 

 

 

log4J 관련

너무나 많이 사용하고, 그냥 검색을 통해서 정보를 얻을수도 있지만 책을 통해서 전반적인 큰 개념을 학습하기 좋은 장점이 있습니다.

보통 설정이 되어 있기 때문에 잘 보지 않기 때문입니다.

Log4j가 logger, appender, layout 이 3가지 구조로 되어 있고, log4j.xml설정파일도 이 3가지 구조를 기반으로 설정되어집니다.

책을 통해서 log4j에 대해서 설정관련된 부분도 좋은 설명들로 쉽게 구성되어 있습니다.

 

■ Spring에서 잘 활용가능한 다양한 기술 소개 

· spring에서 활용할수 있는 기법 및 기술이 추가로 소개되어집니다.

· spring시큐리티를 통한 로그인, 로그아웃

· 파일 업로드 

· 예외처리 방식

· 다국어 처리

· 유효성 검사

· 스프링 웹 플로우

· 타일즈

 

 

노트 (Tip 과 같은 항목)

· 프로젝트를 진행하면, 한번은 설정해야 하는 부분이나 조금 더 개념을 잡고 가야 하는 부분에 대해서 Note라는 섹션으로 필요한 시점에 설명이 되어 집니다. 아래 그림처럼 한글에 대한 설정은 한번은 해야 하고, 누군가 해놓으면 별로 신경을 쓰지 않는 설정등입니다.