이미 소장하고 있다면 판매해 보세요.
|
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에서는 스프링 프레임워크를 이용해 애플리케이션을 작성하는 다양한 방법을 살펴보고, 각 방법의 특징과 장단점을 설명한다. 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를 이용한 웹 애플리케이션 프로젝트 |