토비의 스프링 3.1 Vol 2: 스프링의 기술과 선택
도서+교보Only(교보배송)을 함께 15,000원 이상 구매 시 무료배송
15,000원 미만 시 2,500원 배송비 부과
20,000원 미만 시 2,500원 배송비 부과
15,000원 미만 시 2,500원 배송비 부과
1Box 기준 : 도서 10권
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
XML 대신 자바코드를 이용해서 스프링을 개발할 수 있는 최신 빈 설정 기법부터 편리한 RESTful 스타일의 웹 컨트롤러 작성 기법까지 스프링 3.0과 스프링 3.1의 최신 기술을 상세하게 소개하고 그 중에서 자신에게 맞는 최적의 기술을 선택하고 조합할 수 있는 기준과 활용전략을 다룬다.
『토비의 스프링 3.1』은 스프링을 처음 접하거나 스프링을 경험했지만 스프링이 어렵게 느껴지는 개발자부터 스프링을 활용한 아키텍처를 설계하고 프레임워크를 개발하려고 하는 아키텍트에 이르기까지 모두 참고할 수 있는 스프링 완벽 바이블이다
작가정보
저자 이일민은 호주의 IT 서비스 기업인 이프릴의 대표 컨설턴트다. 엔터프라이즈 오픈소스 커뮤니티인 오픈시드의 대표이며 한국스프링사용자모임(KSUG)의 공동설립자이기도 하다. 8비트 컴퓨터 시절 프로그래밍의 매력에 빠져 10여 년간 취미로 프로그래밍을 즐겨오다 전문 개발자의 길로 들어서서 19년째 소프트웨어 개발과 교육, 컨설팅 일을 해오고 있다. 2004년부터 스프링을 이용해서 기업과 학교, 인터넷 서비스 업체의 시스템을 개발해왔고 스프링을 기반으로 한 애플리케이션 프레임워크 제작 컨설팅과 스프링 개발자 교육을 해오고 있다. JCO 컨퍼런스에서 세 차례 스프링을 주제로 발표했고 기묘, 이프릴, KSUG 등을 통해 스프링 세미나를 진행하기도 했다. 스프링과 오픈소스 기술에 관련된 정보와 경험을 공유하는 블로그를 운영하고 있다.
목차
- 1장 IoC 컨테이너와 DI
___1.1 IoC 컨테이너: 빈 팩토리와 애플리케이션 컨텍스트
______1.1.1 IoC 컨테이너를 이용해 애플리케이션 만들기
_________POJO 클래스
_________설정 메타정보
______1.1.2 IoC 컨테이너의 종류와 사용 방법
_________StaticApplicationContext
_________GenericApplicationContext
_________GenericXmlApplicationContext
_________WebApplicationContext
______1.1.3 IoC 컨테이너 계층구조
_________부모 컨텍스트를 이용한 계층구조 효과
_________컨텍스트 계층구조 테스트
______1.1.4 웹 애플리케이션의 IoC 컨테이너 구성
_________웹 애플리케이션의 컨텍스트 계층구조
_________웹 애플리케이션의 컨텍스트 구성 방법
_________루트 애플리케이션 컨텍스트 등록
_________서블릿 애플리케이션 컨텍스트 등록
___1.2 IoC/DI를 위한 빈 설정 메타정보 작성
______1.2.1 빈 설정 메타정보
_________빈 설정 메타정보 항목
______1.2.2 빈 등록 방법
_________XML: 〈bean〉 태그
_________XML: 네임스페이스와 전용 태그
_________자동인식을 이용한 빈 등록: 스테레오타입 애노테이션과 빈 스캐너
_________자바 코드에 의한 빈 등록: @Configuration 클래스의 @Bean 메소드
_________자바 코드에 의한 빈 등록: 일반 빈 클래스의 @Bean 메소드
_________빈 등록 메타정보 구성 전략
______1.2.3 빈 의존관계 설정 방법
_________XML: 〈property〉, 〈constructor-arg〉
_________XML: 자동와이어링
_________XML: 네임스페이스와 전용 태그
_________애노테이션: @Resource
_________애노테이션: @Autowired/@Inject
_________@Autowired와 getBean(), 스프링 테스트
_________자바 코드에 의한 의존관계 설정
_________빈 의존관계 설정 전략
______1.2.4 프로퍼티 값 설정 방법
_________메타정보 종류에 따른 값 설정 방법
_________PropertyEditor와 ConversionService
_________컬렉션
_________Null과 빈 문자열
_________프로퍼티 파일을 이용한 값 설정
______1.2.5 컨테이너가 자동등록하는 빈
_________ApplicationContext, BeanFactory
_________ResourceLoader, ApplicationEventPublisher
_________systemProperties, systemEnvironment
___1.3 프로토타입과 스코프
______1.3.1 프로토타입 스코프
_________프로토타입 빈의 생명주기와 종속성
_________프로토타입 빈의 용도
_________DI와 DL
_________프로토타입 빈의 DL 전략
______1.3.2 스코프
_________스코프의 종류
_________스코프 빈의 사용 방법
_________커스텀 스코프와 상태를 저장하는 빈 사용하기
___1.4 기타 빈 설정 메타정보
______1.4.1 빈 이름
_________XML 설정에서의 빈 식별자와 별칭
_________애노테이션에서의 빈 이름
______1.4.2 빈 생명주기 메소드
_________초기화 메소드
_________제거 메소드
______1.4.3 팩토리 빈과 팩토리 메소드
___1.5 스프링 3.1의 Ioc 컨테이너와 DI
______1.5.1 빈의 역할과 구분
_________빈의 종류
_________컨테이너 인프라 빈과 전용 태그
_________빈의 역할
______1.5.2 컨테이너 인프라 빈을 위한 자바 코드 메타정보
_________IoC/DI 설정 방법의 발전
_________자바 코드를 이용한 컨테이너 인프라 빈 등록
______1.5.3 웹 애플리케이션의 새로운 IoC 컨테이너 구성
______1.5.4 런타임 환경 추상화와 프로파일
_________환경에 따른 빈 설정정보 변경 전략과 한계
_________런타임 환경과 프로파일
_________활성 프로파일 지정 방법
_________프로파일 활용 전략
______1.5.5 프로퍼티 소스
_________프로퍼티
_________스프링에서 사용되는 프로퍼티의 종류
_________프로파일의 통합과 추상화
_________프로퍼티 소스의 사용
_________@PropertySource와 프로퍼티 파일
_________웹 환경에서 사용되는 프로퍼티 소스와 프로퍼티 소스 초기화 오브젝트
___1.6 정리
2장 데이터 액세스 기술
___2.1 공통 개념
______2.1.1 DAO 패턴
_________DAO 인터페이스와 DI
_________예외처리
______2.1.2 템플릿과 API
______2.1.3 DataSource
_________학습 테스트와 통합 테스트를 위한 DataSource
_________오픈소스 또는 상용 DB 커넥션 풀
_________JDNI/WAS DB 풀
___2.2 JDBC
______2.2.1 스프링 JDBC 기술과 동작원리
_________스프링의 JDBC 접근 방법
_________스프링 JDBC가 해주는 작업
______2.2.2 SimpleJdbcTemplate
_________SimpleJdbcTemplate 생성
_________SQL 파라미터
_________SQL 실행 메소드
_________SQL 조회 메소드
_________SQL 배치 메소드
______2.2.3 SimpleJdbcInsert
_________SimpleJdbcInsert 생성
_________SimpleJdbcInsert 실행
______2.2.4 SimpleJdbcCall
_________SimpleJdbcCall 생성
_________SimpleJdbcCall 실행
______2.2.5 스프링 JDBC DAO
___2.3 iBatis SqlMaps
______2.3.1 SqlMapClient 생성
_________iBatis 설정파일과 매핑파일
_________SqlMapClient를 위한 SqlMapClientFactoryBean 등록
______2.3.2 SqlMapClientTemplate
_________등록, 수정, 삭제
_________조회
_________SqlMapClientCallback
___2.4 JPA
______2.4.1 EntityManagerFactory 등록
_________LocalEntityManagerFactoryBean
_________JavaEE 5 서버가 제공하는 EntityManagerFactory
_________LocalContainerEntityManagerFactoryBean
_________트랜잭션 매니저
______2.4.2 EntityManager와 JpaTemplate
_________JpaTemplate
_________애플리케이션 관리 EntityManager와 @PersistenceUnit
_________컨테이너 관리 EntityManager와 @PersistenceContext
_________@PersistenceContext와 확장된 퍼시스턴스 컨텍스트
_________JPA 예외 변환
_________JPA 예외 변환 AOP
___2.5 하이버네이트
______2.5.1 SessionFactory 등록
_________LocalSessionFactoryBean
_________AnnotationSessionFactoryBean
_________트랜잭션 매니저
______2.5.2 Session과 HibernateTemplate
_________HibernateTemplate
_________SessionFactory.getCurrentSession()
___2.6 트랜잭션
______2.6.1 트랜잭션 추상화와 동기화
_________PlatformTransactionManager
_________트랜잭션 매니저의 종류
______2.6.2 트랜잭션 경계설정 전략
_________코드에 의한 트랜잭션 경계설정
_________선언적 트랜잭션 경계설정
_________프록시 모드: 인터페이스와 클래스
_________AOP 방식: 프록시와 AspectJ
______2.6.3 트랜잭션 속성
_________트랜잭션 전파: propagation
_________트랜잭션 격리수준: isolation
_________트랜잭션 제한시간: timeout
_________읽기전용 트랜잭션: read-only, readOnly
_________트랜잭션 롤백 예외: rollback-for, rollbackFor, rollbackForClassName
_________트랜잭션 커밋 예외: no-rollback-for, noRollbackFor, noRollbackForClassName
______2.6.4 데이터 액세스 기술 트랜잭션의 통합
_________트랜잭션 매니저별 조합 가능 기술
_________ORM과 비 ORM DAO를 함께 사용할 때의 주의사항
______2.6.5 JTA를 이용한 글로벌/분산 트랜잭션
_________독립형 JTA 트랜잭션 매니저
_________WAS 트랜잭션 매니저의 고급 기능 사용하기
___2.7 스프링 3.1의 데이터 액세스 기술
______2.7.1 persistence.xml 없이 JPA 사용하기
______2.7.2 하이버네이트 4 지원
_________LocalSessionFactoryBean
_________LocalSessionFactoryBuilder
______2.7.3 @EnableTransactionManager 295
___2.8 정리
3장 스프링 웹 기술과 스프링 MVC
___3.1 스프링의 웹 프레젠테이션 계층 기술
______3.1.1 스프링에서 사용되는 웹 프레임워크의 종류
_________스프링 웹 프레임워크
_________스프링 포트폴리오 웹 프레임워크
_________스프링을 기반으로 두지 않는 웹 프레임워크
______3.1.2 스프링 MVC와 DispatcherServlet 전략
_________DispatcherServlet과 MVC 아키텍처
_________DispatcherServlet의 DI 가능한 전략
___3.2 스프링 웹 애플리케이션 환경 구성
______3.2.1 간단한 스프링 웹 프로젝트 생성
_________루트 웹 애플리케이션 컨텍스트
_________서블릿 웹 애플리케이션 컨텍스트 등록
_________스프링 웹 프로젝트 검증
______3.2.2 스프링 웹 학습 테스트
_________서블릿 테스트용 목 오브젝트
_________테스트를 위한 DispatcherServlet 확장
_________ConfigurableDispatcherServlet을 이용한 스프링 MVC 테스트
_________편리한 DispatcherServlet 테스트를 위한 AbstractDispatcherServletTest
___3.3 컨트롤러
______3.3.1 컨트롤러의 종류와 핸들러 어댑터
_________Servlet과 SimpleServletHandlerAdapter
_________HttpRequestHandler와 HttpRequestHandlerAdapter
_________Controller와 SimpleControllerHandlerAdapter
_________AnnotationMethodHandlerAdapter
______3.3.2 핸들러 매핑
_________BeanNameUrlHandlerMapping
_________ControllerBeanNameHandlerMapping
_________ControllerClassNameHandlerMapping
_________SimpleUrlHandlerMapping
_________DefaultAnnotationHandlerMapping
_________기타 공통 설정정보
______3.3.3 핸들러 인터셉터
_________HandlerInterceptor
_________핸들러 인터셉터 적용
______3.3.4 컨트롤러 확장
_________커스텀 컨트롤러 인터페이스와 핸들러 어댑터 개발
___3.4 뷰
______3.4.1 뷰
_________InternalResourceView와 JstlView
_________RedirectView
_________VelocityView, FreeMarkerView
_________MarshallingView
_________AbstractExcelView, AbstractJExcelView, AbstractPdfView
_________AbstractAtomFeedView, AbstractRssFeedView
_________XsltView, TilesView, AbstractJasperReportsView
_________MappingJacksonJsonView
______3.4.2 뷰 리졸버
_________InternalResourceViewResolver
_________VelocityViewResolver, FreeMarkerViewResolver
_________ResourceBundleViewResolver, XmlViewResolver, BeanNameViewResolver
_________ContentNegotiatingViewResolver
___3.5 기타 전략
______3.5.1 핸들러 예외 리졸버
_________AnnotationMethodHandlerExceptionResolver
_________ResponseStatusExceptionResolver
_________DefaultHandlerExceptionResolver
_________SimpleMappingExceptionResolver
______3.5.2 지역정보 리졸버
______3.5.3 멀티파트 리졸버
_________RequestToViewNameTranslator
___3.6 스프링 3.1의 MVC
______3.6.1 플래시 맵 매니저 전략
_________플래시 맵
_________플래시 맵 매니저
_________플래시 맵 매니저 전략
______3.6.2 WebApplicationInitializer를 이용한 컨텍스트 등록
_________루트 웹 컨텍스트 등록
_________서블릿 컨텍스트 등록
___3.7 정리
4장 스프링 @MVC
___4.1 @RequestMapping 핸들러 매핑
______4.1.1 클래스/메소드 결합 매핑정보
_________@RequestMapping 애노테이션
_________타입 레벨 매핑과 메소드 레벨 매핑의 결합
_________메소드 레벨 단독 매핑
_________타입 레벨 단독 매핑
______4.1.2 타입 상속과 매핑
_________매핑정보 상속의 종류
_________제네릭스와 매핑정보 상속을 이용한 컨트롤러 작성
___4.2 @Controller
______4.2.1 메소드 파라미터의 종류
_________HttpServletRequest, HttpServletResponse
_________HttpSession
_________WebRequest, NativeWebRequest
_________Locale
_________InputStream, Reader
_________OutputStream, Writer
_________@PathVariable
_________@RequestParam
_________@CookieValue
_________@RequestHeader
_________Map, Model, ModelMap
_________@ModelAttribute
_________Errors, BindingResult
_________SessionStatus
_________@RequestBody
_________@Value
_________@Valid
______4.2.2 리턴 타입의 종류
_________자동 추가 모델 오브젝트와 자동생성 뷰 이름
_________ModelAndView
_________String
_________void
_________모델 오브젝트
_________Map/Model/ModelMap
_________View
_________@ResponseBody
______4.2.3 @SessionAttributes와 SessionStatus
_________도메인 중심 프로그래밍 모델과 상태 유지를 위한 세션 도입의 필요성
_________@SessionAttributes
_________SessionStatus
_________등록 폼을 위한 @SessionAttributes 사용
_________스프링 목 오브젝트와 AbstractDispatcherServletTest를 이용해 세션 테스트 만들기
___4.3 모델 바인딩과 검증
______4.3.1 PropertyEditor
_________디폴트 프로퍼티 에디터
_________커스텀 프로퍼티 에디터
_________@InitBinder
_________WebBindingInitializer
_________프로토타입 빈 프로퍼티 에디터
______4.3.2 Converter와 Formatter
_________Converter
_________ConversionService
_________Formatter와 FormattingConversionService
_________바인딩 기술의 적용 우선순위와 활용 전략
______4.3.3 WebDataBinder 설정 항목
_________allowedFields, disallowedFields
_________requiredFields
_________fieldMarkerPrefix
_________fieldDefaultPrefix
______4.3.4 Validator와 BindingResult, Errors
_________Validator
_________JSR-303 빈 검증 기능
_________BindingResult와 MessageCodeResolver
_________MessageSource
______4.3.5 모델의 일생
_________HTTP 요청으로부터 컨트롤러 메소드까지
_________컨트롤러 메소드로부터 뷰까지
___4.4 JSP 뷰와 form 태그
______4.4.1 EL과 spring 태그 라이브러리를 이용한 모델 출력
_________JSP EL
_________스프링 SpEL
_________지역화 메시지 출력
______4.4.2 spring 태그 라이브러리를 이용한 폼 작성
_________단일 폼 모델
_________〈spring:bind〉와 BindingStatus
______4.4.3 form 태그 라이브러리
_________〈form:form〉
_________〈form:input〉
_________〈form:label〉
_________〈form:errors〉
_________〈form:hidden〉
_________〈form:password〉, 〈form:textarea〉
_________〈form:checkbox〉, 〈form:checkboxes〉
_________〈form:radiobutton〉, 〈form:radiobuttons〉
_________〈form:select〉, 〈form:option〉, 〈form:options〉
_________커스텀 UI 태그 만들기
___4.5 메시지 컨버터와 AJAX
______4.5.1 메시지 컨버터의 종류
_________JSON을 이용한 AJAX 컨트롤러: GET + JSON
_________JSON을 이용한 AJAX 컨트롤러: POST(JSON) + JSON
___4.6 mvc 네임스페이스
_________〈mvc:annotation-driven〉
_________〈mvc:interceptors〉
_________〈mvc:view-controller〉
___4.7 @MVC 확장 포인트
______4.7.1 AnnotationMethodHandlerAdapter
_________SessionAttributeStore
_________WebArgumentResolver
_________ModelAndViewResolver
___4.8 URL과 리소스 관리
______4.8.1 〈mvc:default-servlet-handler/〉를 이용한 URL 관리
_________디폴트 서블릿과 URL 매핑 문제
_________〈mvc:default-servlet-handler/〉
______4.8.2 〈url:resource/〉를 이용한 리소스 관리
___4.9 스프링 3.1의 @MVC
______4.9.1 새로운 RequestMapping 전략
_________@RequestMapping 메소드와 핸들러 매핑 전략의 불일치
_________HandlerMethod
_________@RequestMapping 전략 선택
______4.9.2 @RequestMapping 핸들러 매핑: RequestMappingHandlerMapping
_________요청 조건
_________요청 조건의 결합 방식
______4.9.3 @RequestMapping 핸들러 어댑터
_________파라미터 타입
_________확장 포인트
______4.9.4 @EnableWebMvc와 WebMvcConfigurationSupport를 이용한 @MVC 설정
_________@EnableWebMvc와 WebMvcConfigurer
_________@MVC 설정자 빈 등록 방법
_________@MVC 전략용 설정 빈 등록
___4.10 정리
5장 AOP와 LTW
___5.1 애스펙트 AOP
______5.1.1 프록시 기반 AOP
_________프록시 기반 AOP 개발 스타일의 종류와 특징
_________자동 프록시 생성기와 프록시 빈
_________프록시의 종류
______5.1.2 @AspectJ AOP
_________@AspectJ를 이용하기 위한 준비사항
_________@Aspect 클래스와 구성요소
_________포인트컷 메소드와 애노테이션
_________어드바이스 메소드와 애노테이션
_________파라미터 선언과 바인딩
_________@AspectJ를 이용한 AOP의 학습 방법과 적용 전략
___5.2 AspectJ와 @Configurable
______5.2.1 AspectJ AOP
______5.2.2 빈이 아닌 오브젝트에 DI 적용하기
_________DI 애스펙트
_________@Configurable
_________로드타임 위버와 자바 에이전트
___5.3 로드타임 위버(LT)
___5.4 스프링 3.1의 AOP와 LTW
______5.4.1 AOP와 LTW를 위한 애노테이션
_________@EnableAspectJAutoProxy
_________@EnableLoadTimeWeaving
___5.5 정리
6장 테스트 컨텍스트 프레임워크
___6.1 테스트 컨텍스트 프레임워크
______6.1.1 테스트 프레임워크와 컨텍스트 테스트
_________테스트용 애플리케이션 컨텍스트 캐싱과 설정파일
_________컨텍스트 설정의 상속과 컨텍스트 로더
______6.1.2 테스트 코드의 테스트 컨텍스트 활용
_________테스트 컨텍스트로부터 DI 받기
_________공유 컨텍스트 사용 시 주의할 점
___6.2 트랜잭션 지원 테스트
______6.2.1 테스트의 트랜잭션 지원 필요성
_________DAO 단독 테스트
_________롤백 테스트
______6.2.2 트랜잭션 지원 테스트 작성 방법
_________트랜잭션 매니저
_________@Transactional 테스트
_________ORM 롤백 트랜잭션 테스트의 주의사항
_________트랜잭션 지원 테스트에 DBUnit 이용하기
___6.3 스프링 3.1의 컨텍스트 테스트 프레임워크
______6.3.1 자바 코드 설정정보와 프로파일 활용
_________@Configuration 클래스 테스트
_________@ActiveProfile
___6.4 정리
7장 스프링의 기타 기술과 효과적인 학습 방법
___7.1 스프링 기술과 API를 효과적으로 학습하는 방법
______7.1.1 빈으로 등록되는 스프링 클래스와 DI
_________구현 인터페이스 분석
_________프로퍼티 분석
_________DI/확장 포인트 분석
___7.2 IoC 컨테이너 DI
______7.2.1 BeanPostProcessor와 BeanFactoryPostProcessor
_________BeanPostProcessor
_________BeanFactoryPostProcessor
___7.3 SpEL
______7.3.1 SpEL 사용 방법
___7.4 OXM
______7.4.1 Marshaller/Unmarshaller 인터페이스
______7.4.2 OXM 기술 어댑터 클래스
___7.5 리모팅과 웹 서비스, EJB
______7.5.1 익스포터와 프록시
_________익스포터
_________프록시
______7.5.2 RESTful 서비스 템플릿
______7.5.3 EJB 서비스 이용
___7.6 태스크 실행과 스케줄링
______7.6.1 TaskExecutor 서비스 추상화
______7.6.2 TaskScheduler
______7.6.3 task 네임스페이스
_________〈task:executor〉
_________〈task:scheduler〉
_________〈task:scheduled-tasks〉와 〈task:scheduled〉
______7.6.4 애노테이션을 이용한 스케줄링과 비동기 태스크 실행
_________@Scheduled
_________@Async
___7.7 캐시 추상화(스프링 3.1)
______7.7.1 애노테이션을 이용한 캐시 속성 부여
_________@Cacheable
_________@CacheEvict와 @CachePut
_________애노테이션을 이용한 캐시 기능 설정
______7.7.2 캐시 매니저
___7.8 @Enable 애노테이션을 이용한 빈 설정정보 모듈화
______7.8.1 @Import와 @Configuration 상속
_________@Import를 이용한 단순 재사용
_________@Configuration 클래스 상속과 오버라이딩을 이용한 확장 방법
______7.8.2 @Enable 전용 애노테이션과 ImportAware
_________@Enable 애노테이션 적용
_________ImportAware 인터페이스를 이용한 옵션 지정
______7.8.3 빈 설정자
______7.8.4 ImportSelector와 ImportBeanDefinitionRegistrar
___7.9 정리
부록 A 스프링 모듈
___A.1 스프링 모듈의 종류와 특징
______A.1.1 스프링 모듈 이름
______A.1.2 스프링 모듈 추가
_________수동 추가
_________Maven/Ivy 자동 추가
______A.1.3 스프링 모듈 목록
___A.2 스프링 모듈의 의존관계
______A.2.1 모듈별 의존관계
_________ASM 모듈
_________Core 모듈
_________Beans 모듈
_________AOP 모듈
_________Expression 모듈
_________Context 모듈
_________Context.Support 모듈
_________Transaction 모듈
_________JDBC 모듈
_________ORM 모듈
_________Web 모듈
_________Web.Servlet 모듈
_________Web.Portlet 모듈
_________Web.Struts 모듈
_________JMS 모듈
_________Aspects 모듈
_________Instrument 모듈
_________Instrument.Tomcat 모듈
_________Test 모듈
부록 B 스프링 의존 라이브러리
___B.1 의존 라이브러리의 종류와 특징
______B.1.1 의존 라이브러리 이름
______B.1.2 의존 라이브러리 추가
_________수동 추가
_________자동 추가
___B.2 모듈별 의존 라이브러리 의존관계
______B.2.1 필수 라이브러리
______B.2.2 모듈별 선택 라이브러리
_________ASM 모듈
_________Core 모듈
_________Beans 모듈
_________AOP 모듈
_________Expression 모듈
_________Context 모듈
_________Context.Support 모듈
_________Transaction 모듈
_________JDBC 모듈
_________ORM 모듈
_________Web 모듈
_________Web.Servlet 모듈
_________Web.Portlet 모듈
_________Web.Struts 모듈
_________JMS 모듈
_________Aspects 모듈
_________Instrument 모듈
_________Instrument.Tomcat 모듈
_________Test 모듈
출판사 서평
★ 이 책에서 다루는 내용 ★
★ DIJ/JavaConfig, OXM, @MVC, SpEL, Task, REST 등의 스프링 3.0의 최신 기술 소개
Java EE 6의 JSR-303과 자바코드를 이용한 최첨단 DI기술, XML 매핑을 위한 OXM, 기존 MVC를 완벽하게 대체한 강력한 웹 프레임워크인 @MVC, 스프링 공식 EL인 SpEL, JSR-303(BeanValidation)과 새로운 컨버터와 포매터 활용방법, 각종 비동기 작업을 위한 Task 기능, REST 템플릿 사용법 등 스프링 3.0의 새로운 기능을 기존 스프링 기술과 함께 상세히 소개한다.
★ 런타임 추상화, 프로파일, 프로퍼티 소스, 캐시 추상화, 발전된 @MVC, 플래시 맵 등 스프링 3.1의 최신 기술 소개
프로파일을 이용한 다이내믹한 빈 설정 기술, 통합된 프로퍼티 소스, 더욱 강력해진 @MVC 핸들러 작성, 플래시 맵 활용 방법과 AOP를 이용한 캐시 추상화 등 스프링 3.1의 최신 기술과 달라진 점을 자세히 소개한다.
★ 스프링 기술 선택을 위한 상세한 기술 비교, 선택 기준 제시
같은 기술에도 수많은 옵션을 제공하는 스프링의 특성 때문에 기술 선택에 고민하는 개발자를 위해서 스프링이 제공하는 다양한 기술 옵션을 비교하고, 환경에 따른 적절한 선택을 위한 기준을 제공해준다.
★ @Enable 빈 설정 모듈화 기법 소개
스프링 3.1의 최신 자바코드 빈 설정 기법을 이용해서 재사용 가능한 빈 설정 모듈을 만드는 방법을 스프링 3.1에 적용된 실전 예를 기준으로 상세하게 설명한다.
★ 스프링 애플리케이션 아키텍처 설계와 스프링 기반 프레임워크 제작을 위한 완벽 가이드
스프링을 이용한 엔터프라이즈 애플리케이션 아키텍처 작성을 위한 다양한 아키텍처 소개와 전략 분석, 스프링을 기반으로 한 사내 프레임워크 제작에 꼭 필요한 스프링 확장 기법을 소개한다.
★ 이 책의 구성 ★
스프링이 공개된 지 이미 9년째이고 많은 개발자가 스프링을 사용해 애플리케이션을 개발해오고 있다. 그럼에도 적지 않은 수의 개발자들은 스프링의 핵심 가치와 혜택을 충분히 누리지 못하는 듯하다. 스프링의 가치를 제대로 누리며 사용하려면 스프링을 제대로 공부해야 한다. 스프링을 효과적으로 익히려면 다음의 세 가지 단계를 통해 스프링을 학습해야 한다.
▶ 스프링의 핵심 가치와 원리에 대한 이해
▶ 스프링의 기술에 대한 지식과 선택 기준 정립
▶ 스프링의 적용과 확장
이 책은 이 세 가지 단계를 따라서 스프링을 공부하려는 사람을 대상으로 쓰여진 책으로, Vol. 1에서는 첫 단계인 ‘핵심 가치와 원리에 대한 이해’를 중심으로 하고, Vol. 2에서는 두 번째 단계인 ‘스프링 기술에 대한 지식과 선택’을 집중해서 다룬다. 세 번째 단계인 확장에 대해서는 책의 여러 곳에서 다양한 전략과 예제, 힌트를 제공한다. 하지만 본격적으로 응용과 확장에 대한 지식을 쌓는 일은 독자들의 몫이다. 각자의 상황에 맞게 처음 두 단계에서 배운 지식을 응용해 스프링을 확장해보는 훈련을 해야 한다.
Vol. 2에서는 스프링 프레임워크를 이용해 애플리케이션을 작성하는 다양한 방법을 살펴보고, 각 방법의 특징과 장단점을 설명한다. Vol. 2는 각 장마다 개별 기술을 독립적으로 설명하므로 원하는 장부터 살펴봐도 상관없다. 다만 1장은 스프링을 이용해 애플리케이션을 만들 때 반드시 알아야 할 애플리케이션 구조와 설정 방법을 설명하므로 다른 장으로 넘어가기 전에 먼저 살펴보기를 권장한다.
Vol. 2는 스프링이 제공하는 기술의 종류와 특징, 사용법에 대한 설명에 집중하고, 이를 이용해서 만들어지는 애플리케이션 코드의 패턴과 구조에 관한 내용은 Vol. 1에서 자세히 다루므로 Vol. 2에서 다루지 않는다. Vol. 2의 내용은 Vol. 1에서 설명한 내용을 이해하고 있다는 전제하에 작성됐다. 스프링의 개발 기술 내용을 빠르게 살펴보고 싶다면 Vol. 1을 보지 않고 Vol. 2를 먼저 봐도 되지만, 가능한 한 Vol. 1을 먼저 공부하고 Vol. 2의 내용을 보기를 권장한다.
Vol. 2의 내용은 대부분 스프링 3.0과 스프링 3.1 버전에 동일하게 적용할 수 있다. 스프링 3.1에만 적용되는 내용은 각 장의 마지막 절에서 따로 설명한다.
Vol. 2의 예제 코드는 두 가지로 구성된다.
첫째는 각 장에서 설명하는 스프링 기술의 사용 방법을 담은 학습 테스트다. 책에는 설명에 꼭 필요한 일정 분량의 코드만 소개되어 있다. 각 기술의 사용 방법을 담은 좀 더 다양한 코드는 소스코드 파일에 담긴 learningtest 프로젝트의 학습 테스트 코드를 참고하면 된다. 테스트 코드이지만 기술 학습용으로 작성됐으므로 이를 Vol. 2의 내용과 함께 살펴보면 스프링 기술의 사용 방법에 대한 아이디어를 얻을 수 있을 것이다. learningtest 프로젝트는 스프링 3.0으로 작성된 것과 스프링 3.1로 작성된 것, 두 가지가 제공된다.
둘째는 스프링 웹 기술인 스프링 MVC를 이용해 만든 웹 애플리케이션 예제인 springusergroup 프로젝트다. 이 프로젝트는 서버에서 동작하도록 만들어진 완전한 애플리케이션이다. 그렇다고 이 예제 프로젝트를 그대로 가져다 실전에서 활용하면 될 것이라고 기대해선 안 된다. 프로젝트를 구성할 때 참고하거나 프로젝트의 각 기술 영역에 대한 접근 방법이 자신의 상황과 일치한다면 일부를 활용할 수는 있겠지만, Vol. 2에서 줄곧 설명하는 대로 아키텍처와 계층구조, 사용할 기술, 설정 방법, 각 기술의 접근 방법은 각자의 상황과 환경에 맞게 선택해야 한다. springusergroup 예제의 목적은 스프링 MVC를 사용한 웹 프레젠테이션 계층의 개발과 이를 다른 계층과 어떻게 접목하는지에 관한 것임을 기억하자.
예제 프로젝트를 설치하고 사용하는 방법은 각 프로젝트 폴더의 readme.txt 파일을 참고하면 된다. 모든 예제 프로젝트는 JavaSE 1.6과 이클립스 기반의 STS(SpringSource Tool Suite)에서 작성됐다. STS는 http://www.springsource.com/products/sts에서 다운로드 받을 수 있다.
책의 예제에 사용한 DB는 MySQL 5.1 버전이다. 하지만 적절한 JDBC 드라이버를 추가하고 DB 연결정보를 수정해주면 그 밖의 DB를 사용해서 예제를 실행할 수 있다. DB를 변경하는 방법도 프로젝트 루트의 readme.txt 파일에 나와 있다.
[별도 소스코드 제공]
- 이 책에 들어 있는 모든 예제의 소스코드
- 스프링 3.0과 스프링 3.1의 기술 활용법을 보여주는 학습 테스트 코드
- 스프링 @MVC를 이용한 웹 애플리케이션 프로젝트
★ 이 책의 대상 독자 ★
이 책은 스프링을 이용해서 엔터프라이즈 자바 애플리케이션을 개발하려는 모든 개발자를 대상으로 한다. 이 책을 공부하기 위해서는 자바 언어와 JDBC를 이용한 DB 프로그래밍, 그리고 기초적인 웹 개발 지식이 필요하다. Vol. 2에는 스프링 외의 서드파티 프레임워크나 JavaEE 표준 기술을 스프링에 통합해서 사용하는 내용이 일부 포함되어 있다. 이런 내용을 살펴볼 때는 관련 기술에 대한 지식이 추가로 필요할 수 있다.
★ 스프링 3.1의 새로운 기능 ★
스프링 3.1에 추가된 주요한 기능과 특징은 다음과 같다.
강화된 자바 코드를 이용한 빈 설정
스프링 3.1은 스프링 3.0부터 지원하기 시작한 자바 코드를 이용한 빈 설정 방식을 대폭 확장해서 스프링 빈 설정의 거의 모든 영역으로 확대했다. 기존에 XML로 작성했던 스프링 설정 정보를 3.1에서는 자바 코드로 대체할 수 있다. XML을 전혀 사용하지 않고 스프링 애플리케이션을 작성할 수도 있다. 자바 코드를 이용한 빈 설정을 위해 다양한 애노테이션이 추가됐다. XML의 전용 커스텀 태그를 대체할 수 있는, @Enable로 시작하는 전용 애노테이션도 제공된다.
런타임 환경 추상화
스프링 애플리케이션이 실행되는 런타임 환경 정보를 추상화한 환경 오브젝트가 컨테이너를 통해 제공된다. 실행환경에 따라 달라지는 빈 설정을 효과적으로 관리할 수 있는 프로파일과 각종 프로퍼티 정보를 컨테이너를 통해 일관된 방식으로 제공할 수 있게 해주는 프로퍼티 소스가 환경 오브젝트가 제공하는 주요 기능이다.
JPA 지원 확장과 하이버네이트 4 지원
하이버네이트 4 지원 기능이 새롭게 추가됐다. JPA를 이용할 때보다 편리하게 설정정보를 작성할 수 있는 편리한 기능도 추가됐다.
새로운 DispatcherServlet 전략과 플래시 맵
스프링 3.0에서 사용되던 DispatcherServlet 전략의 일부가 새롭게 설계된 전략으로 대체됐다. 이를 통해 MVC 기능을 확장하기가 편리해졌다. Post/Redirect/Get 패턴에 사용할 수 있는 플래시 맵 기능도 추가됐다.
캐시 추상화
AOP를 이용한 메소드 레벨의 캐시 추상화 기능이 추가됐다. 이를 이용해 캐시 구현 기술에 독립적인 방식으로 애플리케이션 빈에 캐시 기능을 적용할 수 있게 됐다. 맵을 이용한 간단한 캐시 구현부터 ehcache를 이용한 고급 캐시 기술까지 지원한다.
★ 『토비의 스프링 3.1』 추천의 글 ★
스프링의 아버지 로드 존슨은 '객체지향 설계는 특정 구현기술보다, 심지어 자바보다도 더 중요하다.'고 말했다. 『토비의 스프링 3』 책은 그 가치를 잘 담아냈다. 테스트하기 쉬운 코드, 구성요소의 역할과 책임을 섬세하게 나누는 설계 등 이 책에서 강조하는 기법은 프로그래밍을 하는 사람이면 누구나 새겨볼 만한 내용이다. 거기에 비해 어쩌면 최신 기술의 소개라는 측면은 부차적일지도 모른다. 그럼에도 최신 스프링 3.1에 맞춰 개정판이 나온다는 소식은 반갑기 그지 없다. 이제 이 책이 단순히 흘러가는 트렌드를 잡는 책이 아니라 『수학의 정석』처럼 꾸준히 개정되며 늘 우리에게 지식과 통찰을 주는 스테디셀러로 자리 잡기를 기원한다.
- 정상혁 / NHN Technology Service 신규서비스 개발팀 차장
스프링 활용법뿐 아니라 그 원리까지 쉽게 이해할 수 있도록 풀어서 설명하는 이 책은 대규모 프로젝트에서 정형화된 업무 로직의 반복된 구현에 지친 SI 개발자 분들에게 학습의 즐거움과 더 나은 코드를 만들어가는 과정에서 실력이 늘어가는 개발의 재미를 다시금 느끼게 해줄 것입니다. 최근 들어서는 3.0에서 3.1, 3.2로 발전해 나가는 스프링의 발전 방향을 눈여겨 보는 분들도 많을 것이다. 이처럼 매우 적절한 시기에 스프링 3.1을 다루는 개정판까지 나온다니, 클라우드, 빅데이터 등 점점 복잡해지는 IT 환경의 변화를 수용하기 위해 스프링이 어떻게 변해가는지도 이 책을 통해 엿볼 수 있을 것입니다.
- 김승권 / 금융분야 독립컨설턴트
★ 『토비의 스프링 3』 추천의 글 ★
저자인 이일민 씨를 아는 사람에게는 긴 설명이 필요 없겠지만, 잘 모르는 분을 위해 이 책의 고유한 가치를 몇 가지 떠올려봤다.
첫째, 뛰어난 강사이기도 한 저자의 효과적인 강의 스타일을 담아낸 책의 이야기 전개다. 저자는 대뜸 스프링이 가진 기술을 나열하기보단 친숙한 자바 코드(초난감 DAO)를 내밀었다. 책을 읽어가면 점차 독자는 흔히 쓰이던 코드의 문제점에 공감하고, 여러 가지 방식으로 개선해가는 여정을 함께한다. 책과 함께 고민한 독자라면 여정의 끝에서 스프링을 쓰는 이유와 어떤 게 올바른 사용법인지 배울 수 있다. 사실 이런 전개는 정말 뛰어난 외국 서적에서는 종종 볼 수 있는 방식이지만, 한글 기술서로 한정하면 가히 독보적이라 할 수 있다.
둘째, 사상과 활용법을 모두 담은 넓은 효용성이다. 시중에 두꺼운 기술서는 드물지 않지만, 이 책은 API 설명이나 화면 캡처로 지면을 할애하지 않았다. 책 전반부는 객체지향 프로그래밍 관점에서 어떤 코드가 좋은 코드인지를 다루면서 왜 스프링을 써야 하는지를 설명하고, 후반부는 스프링을 구성하는 요소 기술을 올바르게 사용하는 방법을 빠짐없이 설명하고 있음을 상기하면 책의 두께는 놀랍도록 얇다(?). 학습과제에만 초점을 맞출 수 있도록 구성한 장의 구성과 단계별 예제는 SoC(Separation of Concerns)를 통해 방대한 내용을 모두 담아내기 위해 저자가 각고해 노력한 결과물이다.
셋째, 책의 내용과 예제 코드의 정확함이다. 프로그래밍 서적으로 공부할 때 예제가 작동하지 않아 시간을 허비한 경험이 있는 개발자는 드물지 않다. 1부는 테스트 주도로 진행하고, 2부도 예제 전부가 테스트 코드 형태로 만들어져 결함을 막았다. 한편 개념 설명을 위해 다이어그램을 활용하고 코드에도 충분한 부연 설명을 붙인 결과, 섬세하고 정확한 내용이 만들어졌다.
변변한 책이 없던 시절 스프링을 이해하기 위해 어쩔 수 없이 스프링 소스코드를 봤다. 스프링 소스코드는 객체를 조직화하는 설계에 대한 모범답안과도 같았다. 하지만 방대한 코드만 보고 의도를 모두 익힐 수는 없었다. 그 후에 로드 존슨의 책을 반복해 읽으면서 스프링을 이해할수록 감탄하고 또 감탄했다. 다행스럽게도 지금 스프링을 공부하는 여러분에게는 더 나은 방법을 제시할 수 있다. 로드 존슨이 했던 이야기를 로드 존슨은 할 수 없는 우리말로 읽을 수 있다. 그리고 진정한 고수 개발자로 꾸준히 노력해온 이일민 씨의 노하우를 함께 배울 수 있다.
- 안영회(http://younghoe.info)
한국스프링사용자모임공동설립자, (주)아이티와이즈컨설팅 컨설턴트
이 책은 스프링의 핵심 가치를 전달하는 데 집중하고 있다. 로드 존슨이 쓴 『J2EE Development without EJB』 이후로 지금까지 출간된 스프링 서적 중에서 이 책만큼 스프링의 핵심 가치를 제대로 전달한 책은 보지 못했다. 이 책은 스프링을 사용하지 않더라도 자바를 기반으로 애플리케이션을 개발하는 모든 개발자가 읽어야 하는 책이다. 그만큼 자바가 추구하고자 하는 핵심 가치에 집중하고 있는 책이다. 특히 이 책의 모든 소스코드에는 테스트 코드가 함께 들어 있다. 이는 테스트하기 쉬운 코드를 만들도록 유도하는 스프링의 강점을 보여주면서 테스트의 중요성을 자연스럽게 이야기하려는 저자의 의도이리라.
자바 기반의 엔터프라이즈 개발은 지금까지 많은 우여곡절을 겪으면서 먼 길을 돌아왔다. 이 책으로 인해 자바가 추구하고자 했던 초심으로 돌아갈 수 있는 계기가 됐으면 하는 바람이다.
- 박재성 / XLGames 웹 서비스 개발자
지난 10회 한국 스프링 사용자 모임 세미나 도입부 때 개회사를 겸한 간단한 발표를 하면서 저는 두 가지를 말했습니다. 스프링이 단순한 프레임워크가 아닌 플랫폼으로 발전했다는 사실과, 그럼에도 초기 스프링의 철학은 여전히 유효하고 더욱 강조돼야 하며 스프링 자체보다 중요하다는 점입니다.
스프링 사이트의 스프링 소개(About Spring)에서 확인할 수 있는 이 철학을 지금까지 로드 존스의 책을 제외한 어떤 스프링 관련 책에서도 충분히 다루지 않았습니다. 그래서 많은 사람이 스프링이 주는 이점과 즐거움을 누리지 못하면서 스프링을 쓰고 있습니다. 고맙게도 이일민 씨는 스프링이 무엇인지 명시적으로 설명하기를 8장으로 미루고 그보다 먼저, 친절하고 쉽게 그리고 감동적으로 스프링의 배경(좋은 객체지향 기법과 우수 실천법)을 설명합니다.
이일민 씨는 뛰어난 개발자이고 완벽주의자인 동시에 타고난 이야기꾼입니다. 전 이 책을 눈으로 읽으면서도 어떻게 이렇게 다양하고 방대한 내용이 한 책으로 엮일 수 있는지 이해할 수가 없습니다. 스프링을 닮은 책입니다.
- 박성철 / 한국 스프링 사용자 모임 큰일꾼
스프링을 처음 본 게 2003년이었는데 그때만 해도 아무도 지금처럼 스프링이 전 세계 애플리케이션 개발 시장에서 가장 영향력 있는 프레임워크로 성장하리라고 예측하지는 못했던 것 같다. 스프링이 성공할 수 있었던 가장 큰 요인 중 하나는 객체지향 원칙을 충실히 지켜내면서도 더 나아가 개발자의 자율성과 창의성을 극대화할 수 있는 유연한 구조를 지니고 있기 때문이다. 이 책은 스프링이 추구했던 이러한 내면의 원칙을 현실과 잘 맞추어 풀어낸 한 편의 흥미진진한 소설과도 같다. 이 시대의 아키텍트나 개발자라면 반드시 한 번은 꼭 읽어봐야 할 책이다.
- 김창제 / 삼성 SDS 수석, Anyframe Java 기획?개발 총괄
스프링은 이제 자바 개발의 필수 프레임워크로 자리 잡았다. 스프링은 자바의 객체지향적 사고와 애자일한 가치를 구현한 프레임워크이지만, 대부분 개발자는 필요한 템플릿을 수정하기만 할 뿐 스프링 프레임워크가 지향하는 가치와 동작원리를 충분히 이해하지 못한 채로 사용하고 있다. 이 책은 스프링을 배우는 데 필요한 DAO, AOP 같은 중요 개념의 이해를 시작으로 실전 프로젝트에 적용하는 방법까지 체계적으로 다루고 있다. 그리고 스프링의 학습법까지 친절히 다루는 등 곳곳에 저자 이일민 씨의 숨은 노력과 배려가 깃든 책으로 자바 개발자라면 꼭 읽어보길 권한다.
- 옥상훈 / 제4대 한국자바개발자 협의회 회장, 현 한국SW아키텍트 연합 공동회장
먼저, 저는 스프링을 전혀 모릅니다. J2EE 1.4, JavaEE 5, 그리고 JavaEE 6까지, 기술 표준과 구현에 참여하고 관심을 둬왔던 저로서는, JavaEE(특히 EJB)의 안티테제로 시작한 스프링에 어느 정도 반감이 있었고, 그래서 의도적으로 알려 하기를 꺼렸습니다.
하지만 티맥스를 떠나 오픈마루에서 웹 서비스 개발을 하게 되자 스프링은 당면한 과제가 돼버렸습니다. 루비온레일스로 비켜가 보기도 했지만, 결국 자바 플랫폼으로 가게 됐습니다. 제가 아무리 JavaEE만으로 개발하자고 주장해도, 결국 스프링을 채택하기에 이르렀습니다.
토비님의 블로그 또한 자바와 비자바를 떠나 많은 개발자에게 감명을 줬습니다. 그리고 그 이면에 담긴 JavaEE의 한계와 문제점은 실은 저를 부끄럽게 만들기 충분했지요. 무엇보다도 그 깊이, 토비님이 보여주신 그 깊이가 저는 한없이 부러웠고 존경스러웠습니다. 저는 이 책의 1장을 읽었습니다. 이제서야 스프링이 뭔지를 겨우 알아가게 되다니, 마치 요새 “맥주 맛도 모르면서”의 광고 카피처럼 말입니다.
이 책이 독자에게 영감과 격려를 주리라 믿습니다.
- 이창신 / ias(iNDIE aPPLICATION sOFTWARE) 대표
먼저, 기다려온 스프링 3 서적의 출간을 축하합니다. 스프링 2.5 버전을 경험했던 사람으로 달라진 기능은 무엇인지, 하위 버전과의 호환성 보장을 위해 어떻게 확장되고 발전됐는지, 새로운 버전이 나올 때마다 갖게 되는 궁금증에 대해 명쾌한 해답을 얻을 수 있는 좋은 기회가 됐습니다. 또한 스프링의 각 개념이 예제 중심으로 잘 설명되어 있어 스프링을 처음 접하는 분들도 쉽게 다가갈 수 있으리라 생각되며, 이전 버전 경험자 분들에게는 스프링이 확장 포인트를 어떻게 응용하면서 업그레이드됐는지 배울 수 있는 좋은 기회가 되리라 생각합니다. 다시 한번 『토비의 스프링 3』 출간을 축하하며, 스프링을 도입하거나 스프링 3.0으로 버전 업그레이드를 고려하고 있는 많은 개발자의 고민을 조금이나마 덜어줄 수 있기를 기대합니다.
- 이봉옥 책임 / 전자정부 표준프레임워크 커미터 삼성SDS
이 책을 통해 개발자들은 리팩토링과 디자인 패턴, 객체지향 핵심 원칙도 자연스럽게 접하면서, 책에 담긴 내용을 자신의 것으로 받아들일 것이라고 생각한다. 원칙과 코드를 잘 어울리게 설명한 대목에서는 누구나 내공을 느끼게 할 만큼 쉽고 깊이 있게 풀어낸 책이기에, 초보 개발자는 물론 연차가 오래됐지만 기초가 부족하다고 느끼는 개발자에게 적극적으로 권해주고 싶다.
독자들이 이 책을 마칠 즈음엔 스프링을 배우러 왔다가 객체지향이라는 월척을 낚았다고 웃으며 책장을 덮게 될 것이라고 확신한다. 아울러 지금까지 써왔던 방식과 달리 스프링에서 주고자 했던 핵심 가치를 느끼며 코딩하고 있는 자신을 발견하리라고 조심스럽게 상상해본다.
- 양수열 / 인피언컨설팅 연구소장, JCO 3대회장?현 고문
저는 스프링은 잘 모르지만 토비 형님과 에이콘 출판사를 잘 알기에 이 책을 자신 있게 권해드릴 수 있습니다. 토비 형님은 어려운 내용을 쉽게 설명하는 마력을 가진 사람입니다. 사실 쉬운 내용도 어렵게 설명하는 분들이 워낙 많기에 그의 글이 더욱 빛납니다.
두 개의 부로 구성된 이 책의 1부는 그의 그런 장점을 잘 녹여내어 처음 시작하는 자바 개발자도 쉽게 내용을 이해할 수 있습니다. 2부는 실제 프로젝트에 적용하는 데 필요한 내용을 담고 있습니다. 또한 고심에 고심을 거듭하여 만든 예제들은 프로젝트를 진행하는 데 적잖은 도움을 드릴 것입니다.
이 책을 구입한 모든 분들이 한 단계 더 발전하는 좋은 계기가 되길 바라겠습니다.
대한민국 개발자 파이팅!
- 정희용 / 월간 마이크로소프트웨어 발행인
책을 펴기도 전에, 1400페이지가 넘는 이 책의 두께와 무게에 지레 겁을 먹은 독자분도 있을 것이다. 하지만 걱정하지 말자. 이 책이 이토록 두껍고 무거워진 건 모두 다 우리를 위한 배려 때문이고, 그 방대한 양만큼이나 매우 친절한 책이다. 스프링을 학습하는 데 있어 중요한 내용을 이렇게까지 차근차근 그리고 점진적으로 쉽게 설명해주는 책은 여태 없었다. 진작에 이런 책으로 스프링 공부를 시작했다면 내가 스프링에 쏟아온 학습 시간이 한층 줄어들었을 게 분명하다.
이 책의 가치는 여러 번 반복해 읽었을 때 더욱 빛을 발한다. 저자의 의도는 단순히 스프링을 설명하는 데 그치지 않는다. 이 책에서는 객체지향적인 코드, 프레임워크의 개념 정립, 테스트가 주는 장점 등을 고스란히 엿볼 수 있다. 물론 우리가 스프링만 가지고서는 아무것도 할 수 없다. 결국은 다른 코드와 버무려 맛있는 코드를 만들어야 한다. 이를 간파한 저자는 바로 그때 어떻게 하면 개발자들이 좀 더 가치 있고 유익한 코드를 작성할 수 있는지 이 책에서 잘 설명한다. 팁을 하나 더 드리자면, 별도로 제공되는 소스코드는 꼭 확인하기 바란다. 나중에 기회가 되면 봄싹 모임에서 스터디로 진행하고 싶을 정도로 멋지고 유용한 코드가 독자를 기다린다. 마치 잠자는 책 속의 코드처럼…
- 백기선 / 봄싹 커뮤니티(http://springsprout.org) 대표, 스프링프레임워크 강사
★ 『토비의 스프링 3.1』 출간에 부쳐 ★
『토비의 스프링 3』은 원래 3부로 기획했던 책이다. 핵심 기술의 이해, 기술의 선택, 프레임워크 확장이라는 세 단계를 통해 스프링을 설명하는 책을 쓰기 시작했다. 하지만 원래 간결하게 설명하는 능력이 부족한 탓인지, 친절하고 자세히 설명해야 한다는 강박관념 때문인지 2부까지만 쓰고 마무리했는데도 처음 생각했던 것보다 훨씬 많은 분량의 글이 나와 제법 묵직하고 두꺼운 책을 발간하게 되었다. 독자분들은 두꺼운 책이라 휴대하기 힘들어하시기는 했지만, 그래도 1부, 2부 두 단계로 스프링을 학습하도록 구성한 방식에 많은 분이 만족해주셨다.
개정판을 준비하면서 스프링 3.1의 새로운 기능을 소개하려고 내용을 추가하니 책 분량은 훨씬 더 늘어났고 더 이상은 한 권으로 책을 내는 것이 어려워졌다. 그래서 스프링의 원리와 이해를 다룬 1부의 내용을 중심으로 한 권을, 또 스프링의 기술과 활용 전략을 다룬 내용을 중심으로 해서 다른 한 권을 해서 두 권으로 분리하게 됐다. 지금까지 가장 많이 받은 독자 피드백이 휴대성이 좋도록 책을 분권해달라고 하는 것이었는데 그 요청을 들어드릴 수 있게도 되었다.
스프링 3.1이 나온 지도 제법 시간이 흐르긴 했지만 아직도 현장에서는 스프링 3.0을 이용하는 경우가 대부분이고, 이제야 스프링 2.5에서 3.0으로 이전하는 곳도 많다고 한다. 그래서 이 책에서는 전체 내용을 스프링 3.1을 기준으로 바꾸는 대신, 스프링 3.0과 스프링 3.1 내용을 함께 담으려고 했다. Vol. 1에서는 스프링 3.0을 기준으로 예제를 작성하는 기존 내용을 그대로 두고 후반부에 이 예제를 스프링 3.1의 새로운 기술을 적용해서 업그레이드 하는 방법을 설명한다. Vol. 2에서는 스프링 3.0과 스프링 3.1에 동일하게 적용되는 내용은 그대로 두고 각 장 마지막에 스프링 3.1의 새로운 기술이나 변경 사항을 집중적으로 다뤘다. 그래서 당장 스프링 3.0으로 프로젝트를 진행하면서 필요한 내용을 참조하시려는 분은 물론, 기존 프로젝트를 스프링 3.1로 업그레이드하거나 3.1로 새로운 프로젝트를 작성하실 분까지 모두 참고할 수 있게 만들었다.
스프링이 이제는 자바 개발자들의 필수 기술이 되었다는 이야기가 들린다. 스프링의 위상이 높아지고 가치가 인정받는 것 같아 기쁘다. 그저 스프링에 대한 지식을 많이 쌓은 스프링 전문가보다는 스프링의 도움으로 애플리케이션 개발을 잘 하는 개발자가 점점 더 많아지기를 기대한다.
- 브리즈번에서 토비 이일민
기본정보
ISBN | 9788960773424 | ||
---|---|---|---|
발행(출시)일자 | 2012년 09월 21일 | ||
쪽수 | 840쪽 | ||
크기 |
188 * 255
* 40
mm
/ 1677 g
|
||
총권수 | 1권 | ||
시리즈명 |
에이콘 오픈소스 프로그래밍 시리즈
|
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립