본문 바로가기

Jbee/서평&영화&자격증

[개발] 스프링 부트 코딩 공작소 / 크레이그 윌즈, 황인서 역 / 길벗출판사


스프링 부트 코딩 공작소
스프링 부트 1.4.0 에 대한 이해를 위해 이 책을 구입했다. 스프링 부트에 대한 매력을 절실히 느낄 수 있는 책이다. 하지만 이 책은 당연히 Java를 알아야 하고, 스프링 프레임워크까지 이해를 하고 있는 상태에서 봐야 빛을 발한다. 그래야 어떠한 부분이 자동화가 이루어졌는지 확인할 수 있으며, 스프링 부트를 효과적으로 사용할 수 있을 것이다. 스프링 프레임워크가 훌륭한 프레임워크지만 빠른 개발 환경 구성을 위해 스프링 부트을 사용해도 전혀 손색이 없다. 스프링을 알고 있으면 스프링 부트에서 자동으로 설정해주는 구성 또는 개발 환경을 customize 할 수 있기 때문이다. 스프링 프레임워크에 대한 이해를 높인 다음 다시 한 번 제대로 스프링 부트를 사용해봐야 겠다. 이 책을 보고나니 스프링에 대한 학습 요구가 절로 생긴다.

이 책에서 필요한 내용들을 대충 요약해봤다. ( Actuator 부분은 무슨 소린지 몰라서 뺐다. )

스프링 부트스트래핑
@SpringBootApplication 애너테이션의 의미
스프링 컴포넌트 검색과 스프링 부트 자동 구성을 활성화한다. 사실 이 애너테이션은 스프링의 유용한 애너테이션 중 다음 세 개를 묶은 것이다!

첫번째, @Configuration
이 애너테이션이 붙은 클래스를 스프링의 자바 기반 구성 클래스로 지정한다.
두번째, @ComponentScan
컴포넌트 검색 기능을 활성화해서 웹 컨트롤러 클래스나 다른 컴포넌트 클래스들을 자동으로 검색하여 스프링 애플리케이션 컨텐스트에 빈으로 등록시킨다. @Controller 애너테이션이 붙여 컴포넌트 검색이 가능하게 할 것이다.
세번째, @EnableAutoConfiguration
이 애너테이션 한 줄로 스프링 부트의 자동 구성 마법이 일어난다!

default로 생성되는 이 클래스 (프로젝트 이름을 딴) BootApplication 클래스는 부트스트랩 클래스이기도 하다. 여기서 main 메서드가 실행가능한 jar 파일로 애플리케이션을 실행할 수 있게 한다. 이 클래스 참조와 명령줄 인자를 run 메서드에 전달하여 애플리케이션을 수행한다. 이 클래스는 변경할 일이 거의 없다. 스프링 부트 자동 구성이 제공하는 것 이상으로 추가적인 스프링 구성이 필요하다면, 별도의 @Configuration 애너테이션을 포함한 구성 클래스에서 작성하는 것이 좋다. 이 구성 클래스들은 BootApplication 클래스가 컴포넌트 검색으로 자동 추가한다.


application.properties 파일
이 파일을 사용하여 스프링 부트가 자동으로 구성하는 내용을 매우 간편하고 섬세하게 조정할 수 있다.
이 파일은 스프링 부탁 자동으로 로드하고 설정된 내용들을 반영한다.


스프링 부트 스타터 의존성
사용해야 하는 라이브러리들을 빌드에만 선언하고 필요한 것은 빌드가 정리하게 한다.
복잡한 프로젝트 의존성을 스타터 의존성 수십개로 해결한다.
추가로 가져오는 다양한 전이적 의존성 버전도 자체적으로 결정한다.
스프링 부트와 함께라면 어떤 라이브러리와 어떤 버전을 사용해야 하는지 걱정할 필요가 없다.

스프링 부트의 자동 구성 사용하기
자동 구성은 스플이 구성을 적용해야 할지 말지를 결정하는 요인들을 판단하는 런타임 과정이다.
클래스패스에 Thymleaf가 있다면 Thymleaf 템플릿 리졸버, 뷰 리졸버, 템플릿 엔진을 구성하는 것이다.

도메인 설정하기
객체를 영속화 할 수 있는 리포지토리를 선언하는데, 스프링 데이터 JPA의 JpaRepository 인터페이스를 상속하면 된다. JpaRepository 인터페이스는 타입 매개변수 두 개를 받는데, 그 중 첫번째는 리포지토리가 사용할 도메인 타입이고, 두번째는 클래스의 ID 프로퍼티 타입이다. JpaRepository는 데이터베이스와 연산을 할 수 있는 18개의 메소드를 제공한다.


웹 애플리케이션 테스트하기
Spirng Mock MVC
애플리케이션 서버를 구동하지 않고도 서블릿 컨테이너와 비슷하게 작동하는 목 구현체로 컨트롤러를 테스트할 수 있다. Get, Post, Put, Delete Mapping에 대해서 테스트할 수 있다.

HTML 페이지 테스트하기
셀레늄은 웹 브라우저를 실행한 후 해당 웹 브라우저 컨텍스트에서 테스트를 실행한다.

셀레늄 테스트는 자동화되고 반복이 가능하다. 사람이 직접 수동으로 테스트하는 것과 비슷한 결과를 얻을 수 있다.


end