logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

토비의 스프링 3

토비의 스프링 3

(스프링 프레임워크 3 기초 원리부터 고급 실전활용까지 완벽 가이드)

이일민 (지은이)
  |  
에이콘출판
2010-08-05
  |  
50,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
yes24 로딩중
교보문고 로딩중
영풍문고 로딩중
인터파크 로딩중
11st 로딩중
G마켓 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

토비의 스프링 3

책 정보

· 제목 : 토비의 스프링 3 (스프링 프레임워크 3 기초 원리부터 고급 실전활용까지 완벽 가이드)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 자바
· ISBN : 9788960771468
· 쪽수 : 1400쪽

책 소개

대한민국 전자정부 표준 프레임워크 기술로 선정된 스프링의 국내 최고 권위자 토비 이일민이 저술한 스프링 프레임워크 3 프로그래밍 완벽 바이블. 스프링의 핵심 프로그래밍 모델인 IoC/DI, PSA, AOP의 동작원리와 이를 다양한 방식으로 응용한 예제을 통해서 스프링을 빠르게 이해할 수 있고 엔터프라이즈 개발에 효과적으로 적용할 수 있는 접근방법을 소개한다. 또한 스프링 3.0의 최신 기술을 상세하게 소개하고 그 중에서 자신에게 맞는 최적의 기술을 선택하고 조합할 수 있는 기준과 전략을 다룬다.

목차

1장 오브젝트와 의존관계
___1.1 초난감 DAO
______1.1.1 User
______1.1.2 UserDao
______1.1.3 main()을 이용한 DAO 테스트 코드
___1.2 DAO의 분리
______1.2.1 관심사의 분리
______1.2.2 커넥션 만들기의 추출
_________UserDao의 관심사항
_________중복 코드의 메소드 추출
_________변경사항에 대한 검증: 리팩토링과 테스트
______1.2.3 DB 커넥션 만들기의 독립
_________상속을 통한 확장
___1.3 DAO의 확장
______1.3.1 클래스의 분리
______1.3.2 인터페이스의 도입
______1.3.3 관계설정 책임의 분리
______1.3.4 원칙과 패턴
_________개방 폐쇄 원칙
_________높은 응집도와 낮은 결합도
_________전략 패턴
___1.4 제어의 역전(IoC)
______1.4.1 오브젝트 팩토리
_________팩토리
_________설계도로서의 팩토리
______1.4.2 오브젝트 팩토리의 활용
______1.4.3 제어권의 이전을 통한 제어관계 역전
______1.5.1 오브젝트 팩토리를 이용한 스프링 IoC
_________애플리케이션 컨텍스트와 설정정보
___1.5 스프링의 IoC
_________DaoFactory를 사용하는 애플리케이션 컨텍스트
______1.5.2 애플리케이션 컨텍스트의 동작방식
______1.5.3 스프링 IoC의 용어 정리
___1.6 싱글톤 레지스트리와 오브젝트 스코프
______1.6.1 싱글톤 레지스트리로서의 애플리케이션 컨텍스트
_________서버 애플리케이션과 싱글톤
_________싱글톤 패턴의 한계
_________싱글톤 레지스트리
______1.6.2 싱글톤과 오브젝트의 상태
______1.6.3 스프링 빈의 스코프
______1.7.1 제어의 역전(IoC)과 의존관계 주입
___1.7 의존관계 주입(DI)
______1.7.2 런타임 의존관계 설정
_________의존관계
_________UserDao의 의존관계
_________UserDao의 의존관계 주입
______1.7.3 의존관계 검색과 주입
______1.7.4 의존관계 주입의 응용
_________기능 구현의 교환
_________부가기능 추가
______1.7.5 메소드를 이용한 의존관계 주입
___1.8______XML을 이용한 설정
______1.8.1 XML 설정
_________connectionMaker() 전환
_________userDao() 전환
_________XML의 의존관계 주입 정보
______1.8.2 XML을 이용하는 애플리케이션 컨텍스트
______1.8.3 DataSource 인터페이스로 변환
_________DataSource 인터페이스 적용
_________자바 코드 설정 방식
_________XML 설정 방식
______1.8.4 프로퍼티 값의 주입
_________값 주입
_________value 값의 자동 변환
___1.9 정리

2장 테스트
___2.1 UserDaoTest 다시 보기
______2.1.1 테스트의 유용성
______2.1.2 UserDaoTest의 특징
_________웹을 통한 DAO 테스트 방법의 문제점
_________작은 단위의 테스트
_________자동수행 테스트 코드
_________지속적인 개선과 점진적인 개발을 위한 테스트
______2.1.3 UserDaoTest의 문제점
___2.2 UserDaoTest 개선
______2.2.1 테스트 검증의 자동화
______2.2.2 테스트의 효율적인 수행과 결과 관리
_________JUnit 테스트로 전환
_________테스트 메소드 전환
_________ 검증 코드 전환
_________ JUnit 테스트 실행
___2.3 개발자를 위한 테스팅 프레임워크 JUnit
______2.3.1 JUnit 테스트 실행 방법
_________IDE
_________빌드 툴
______2.3.2 테스트 결과의 일관성
_________deleteAll()의 getCount() 추가
_________deleteAll()과 getCount()의 테스트
_________동일한 결과를 보장하는 테스트
______2.3.3 포괄적인 테스트
_________getCount() 테스트
_________addAndGet() 테스트 보완
_________get() 예외조건에 대한 테스트
_________테스트를 성공시키기 위한 코드의 수정
_________포괄적인 테스트
______2.3.4 테스트가 이끄는 개발
_________기능설계를 위한 테스트
_________테스트 주도 개발
______2.3.5 테스트 코드 개선
_________@Before
_________픽스처
___2.4 스프링 테스트 적용
______2.4.1 테스트를 위한 애플리케이션 컨텍스트 관리
_________스프링 테스트 컨텍스트 프레임워크 적용
_________테스트 메소드의 컨텍스트 공유
_________테스트 클래스의 컨텍스트 공유
_________@Autowired
______2.4.2 DI와 테스트
_________테스트 코드에 의한 DI
_________테스트를 위한 별도의 DI 설정
_________컨테이너 없는 DI 테스트
_________DI를 이용한 테스트 방법 선택
___2.5 학습 테스트로 배우는 스프링
______2.5.1 학습 테스트의 장점
______2.5.2 학습 테스트 예제
_________JUnit 테스트 오브젝트 테스트
_________스프링 텍스트 컨텍스트 테스트
______2.5.3 버그 테스트
___2.6 정리

3장 템플릿
___3.1 다시 보는 초난감 DAO
______3.1.1 예외처리 기능을 갖춘 DAO
_________JDBC 수정 기능의 예외처리 코드
_________JDBC 조회 기능의 예외처리
___3.2 변하는 것과 변하지 않는 것
______3.2.1 JDBC try/catch/finally 코드의 문제점
_________3.2.2 분리와 재사용을 위한 디자인 패턴 적용
_________메소드 추출
_________템플릿 메소드 패턴의 적용
_________전략 패턴의 적용
_________DI 적용을 위한 클라이언트/컨텍스트 분리
___3.3 JDBC 전략 패턴의 최적화
______3.3.1 전략 클래스의 추가 정보
______3.3.2 전략과 클라이언트의 동거
_________로컬 클래스
_________익명 내부 클래스
______3.4.1 JdbcContext의 분리
___3.4 컨텍스트와 DI
_________클래스 분리
_________빈 의존관계 변경
______3.4.2 JdbcContext의 특별한 DI
_________스프링 빈으로 DI
_________코드를 이용하는 수동 DI
___3.5 템플릿과 콜백
______3.5.1 템플릿/콜백의 동작원리
_________템플릿/콜백의 특징
_________JdbcContext에 적용된 템플릿/콜백
______3.5.2 편리한 콜백의 재활용
_________콜백의 분리와 재활용
_________콜백과 템플릿의 결합
______3.5.3 템플릿/콜백의 응용
_________테스트와 try/catch/finally
_________중복의 제거와 템플릿/콜백 설계
_________템플릿/콜백의 재설계
_________제네릭스를 이용한 콜백 인터페이스
___3.6 스프링의 JdbcTemplate
______3.6.1 update()
______3.6.2 queryForInt()
______3.6.3 queryForObject()
______3.6.4 query()
_________기능 정의와 테스트 작성
_________query() 템플릿을 이용하는 getAll() 구현
_________테스트 보완
______3.6.5 재사용 가능한 콜백의 분리
_________DI를 위한 코드 정리
_________중복 제거
_________템플릿/콜백 패턴과 UserDao
___3.6 정리

4장 예외
___4.1 사라진 SQLException
______4.1.1 초난감 예외처리
_________예외 블랙홀
_________무의미하고 무책임한 throws
______4.1.2 예외의 종류와 특징
______4.1.3 예외처리 방법
_________예외 복구
_________예외처리 회피
_________예외 전환
______4.1.4 예외처리 전략
_________런타임 예외의 보편화
_________add() 메소드의 예외처리
_________애플리케이션 예외
______4.1.5 SQLException은 어떻게 됐나?
___4.2 예외 전환
______4.2.1 JDBC의 한계
_________비표준 SQL
_________호환성 없는 SQLException의 DB 에러정보
______4.2.2 DB 에러 코드 매핑을 통한 전환
______4.2.3 DAO 인터페이스와 DataAccessException 계층구조
_________DAO 인터페이스와 구현의 분리
_________데이터 액세스 예외 추상화와 DataAccessException 계층구조
______4.2.4 기술에 독립적인 UserDao 만들기
_________인터페이스 적용
_________테스트 보완
_________DataAccessException 활용 시 주의사항
______4.3 정리

5장 서비스 추상화
___5.1 사용자 레벨 관리 기능 추가
______5.1.1 필드 추가
_________Level 이늄
_________User 필드 추가
_________UserDaoTest 테스트 수정
_________UserDaoJdbc 수정
______5.1.2 사용자 수정 기능 추가
_________수정 기능 테스트 추가
_________UserDao와 UserDaoJdbc 수정
_________수정 테스트 보완
______5.1.3 UserService.upgradeLevels()
_________UserService 클래스와 빈 등록
_________UserServiceTest 테스트 클래스
_________upgradeLevels() 메소드
_________upgradeLevels() 테스트
______5.1.4 UserService.add()
______5.1.5 코드 개선
_________upgradeLevels() 메소드 코드의 문제점
_________upgradeLevels() 리팩토링
_________User 테스트
_________UserServiceTest 개선
______5.2.1 전부 아니면 전무
_________테스트용 UserService 대역
___5.2 트랜잭션 서비스 추상화
_________강제 예외 발생을 통한 테스트
_________테스트 실패의 원인
______5.2.2 트랜잭션 경계설정
_________JDBC 트랜잭션의 트랜잭션 경계설정
_________UserService와 UserDao의 트랜잭션 문제
_________비즈니스 로직 내의 트랜잭션 경계설정
_________UserService 트랜잭션 경계설정의 문제점
______5.2.3 트랜잭션 동기화
_________Connection 파라미터 제거
_________트랜잭션 동기화 적용
_________트랜잭션 테스트 보완
_________JdbcTemplate과 트랜잭션 동기화
______5.2.4 트랜잭션 서비스 추상화
_________기술과 환경에 종속되는 트랜잭션 경계설정 코드
_________트랜잭션 API의 의존관계 문제와 해결책
_________스프링의 트랜잭션 서비스 추상화
_________트랜잭션 기술 설정의 분리
_________수직, 수평 계층구조와 의존관계
___5.3 서비스 추상화와 단일 책임 원칙
_________단일 책임 원칙
_________단일 책임 원칙의 장점
___5.4 메일 서비스 추상화
______5.4.1 JavaMail을 이용한 메일 발송 기능
_________JavaMail 메일 발송
______5.4.2 JavaMail이 포함된 코드의 테스트
______5.4.3 테스트를 위한 서비스 추상화
_________JavaMail을 이용한 테스트의 문제점
_________메일 발송 기능 추상화
_________테스트용 메일 발송 오브젝트
_________테스트와 서비스 추상화
______5.4.4 테스트 대역
_________의존 오브젝트의 변경을 통한 테스트 방법
_________테스트 대역의 종류와 특징
_________목 오브젝트를 이용한 테스트
___5.5 정리

6장 AOP
___6.1 트랜잭션 코드의 분리
______6.1.1 메소드 분리
______6.1.2 DI를 이용한 클래스의 분리
_________DI 적용을 이용한 트랜잭션 분리
_________UserService 인터페이스 도입
_________분리된 트랜잭션 기능
_________트랜잭션 적용을 위한 DI 설정
_________트랜잭션 분리에 따른 테스트 수정
_________트랜잭션 경계설정 코드 분리의 장점
___6.2 고립된 단위 테스트
______6.2.1 복잡한 의존관계 속의 테스트
______6.2.2 테스트 대상 오브젝트 고립시키기
_________테스트를 위한 UserServiceImpl 고립
_________고립된 단위 테스트 활용
_________UserDao 목 오브젝트
_________테스트 수행 성능의 향상
______6.2.3 단위 테스트와 통합 테스트
______6.2.4 목 프레임워크
_________Mockito 프레임워크
___6.3 다이내믹 프록시와 팩토리 빈
______6.3.1 프록시와 프록시 패턴, 데코레이터 패턴
_________데코레이터 패턴
_________프록시 패턴
______6.3.2 다이내믹 프록시
_________프록시의 구성과 프록시 작성의 문제점
_________리플렉션
_________프록시 클래스
_________다이내믹 프록시 적용
_________다이내믹 프록시의 확장
______6.3.3 다이내믹 프록시를 이용한 트랜잭션 부가기능
_________트랜잭션 InvocationHandler
_________TransactionHandler와 다이내믹 프록시를 이용하는 테스트
______6.3.4 다이내믹 프록시를 위한 팩토리 빈
_________팩토리 빈
_________팩토리 빈의 설정 방법
_________다이내믹 프록시를 만들어주는 팩토리 빈
_________트랜잭션 프록시 팩토리 빈
_________트랜잭션 프록시 팩토리 빈 테스트
______6.3.5 프록시 팩토리 빈 방식의 장점과 한계
_________프록시 팩토리 빈의 재사용
_________프록시 팩토리 빈 방식의 장점
_________프록시 팩토리 빈의 한계
___6.4 스프링의 프록시 팩토리 빈
______6.4.1 ProxyFactoryBean
_________어드바이스: 타깃이 필요 없는 순수한 부가기능
_________포인트컷: 부가기능 적용 대상 메소드 선정 방법
______6.4.2 ProxyFactoryBean 적용
_________TransactionAdvice
_________스프링 XML 설정파일
_________테스트
_________어드바이스와 포인트컷의 재사용
______6.5.1 자동 프록시 생성
___6.5 스프링 AOP
_________중복 문제의 접근 방법
_________빈 후처리기를 이용한 자동 프록시 생성기
_________확장된 포인트컷
_________포인트컷 테스트
___6.5.2 DefaultAdvisorAutoProxyCreator의 적용
_________클래스 필터를 적용한 포인트컷 작성
_________어드바이저를 이용하는 자동 프록시 생성기 등록
_________포인트컷 등록
_________어드바이스와 어드바이저
_________ProxyFactoryBean 제거와 서비스 빈의 원상복구
_________자동 프록시 생성기를 사용하는 테스트
_________자동생성 프록시 확인
______6.5.3 포인트컷 표현식을 이용한 포인트컷
_________포인트컷 표현식
_________포인트컷 표현식 문법
_________포인트컷 표현식 테스트
_________포인트컷 표현식을 이용하는 포인트컷 적용
_________타입 패턴과 클래스 이름 패턴
______6.5.4 AOP란 무엇인가?
_________트랜잭션 서비스 추상화
_________프록시와 데코레이터 패턴
_________다이내믹 프록시와 프록시 팩토리 빈
_________자동 프록시 생성 방법과 포인트컷
_________부가기능의 모듈화
_________AOP: 애스펙트 지향 프로그래밍
______6.5.5 AOP 적용기술
_________프록시를 이용한 AOP
_________바이트코드 생성과 조작을 통한 AOP
______6.5.6 AOP의 용어
______6.5.7 AOP 네임스페이스
_________AOP 네임스페이스
___6.6 트랜잭션 속성
_________어드바이저 내장 포인트컷
______6.6.1 트랜잭션 정의
_________트랜잭션 전파
_________고립수준
_________제한시간
_________읽기전용
______6.6.2 트랜잭션 인터셉터와 트랜잭션 속성
_________TransactionInterceptor
_________메소드 이름 패턴을 이용한 트랜잭션 속성 지정
_________tx 네임스페이스를 이용한 설정 방법
______6.6.3 포인트컷과 트랜잭션 속성의 적용 전략
_________트랜잭션 포인트컷 표현식은 타입 패턴이나 빈 이름을 이용한다
_________공통된 메소드 이름 규칙을 통해 최소한의 트랜잭션 어드바이스와 속성을 정의
한다
_________프록시 방식 AOP는 같은 타깃 오브젝트 내의 메소드를 호출할 때는 적용되지
않는다
______6.6.4 트랜잭션 속성 적용
_________트랜잭션 경계설정의 일원화
_________서비스 빈에 적용되는 포인트컷 표현식 등록
_________트랜잭션 속성을 가진 트랜잭션 어드바이스 등록
_________트랜잭션 속성 테스트
___6.7 애노테이션 트랜잭션 속성과 포인트컷
______6.7.1 트랜잭션 애노테이션
_________@Transactional
_________트랜잭션 속성을 이용하는 포인트컷
_________대체 정책
_________트랜잭션 애노테이션 사용을 위한 설정
______6.7.2 트랜잭션 애노테이션 적용
___6.8 트랜잭션 지원 테스트
______6.8.1 선언적 트랜잭션과 트랜잭션 전파 속성
______6.8.2 트랜잭션 동기화와 테스트
_________트랜잭션 매니저와 트랜잭션 동기화
_________트랜잭션 매니저를 이용한 테스트용 트랜잭션 제어
_________트랜잭션 동기화 검증
_________롤백 테스트
______6.8.3 테스트를 위한 트랜잭션 애노테이션
_________@Transactional
_________@Rollback
_________@TransactionConfiguration
_________NotTransactional과 Propagation.NEVER
_________효과적인 DB 테스트
___6.9 정리

7장 스프링 핵심 기술의 응용
___7.1 SQL과 DAO의 분리
______7.1.1 XML 설정을 이용한 분리
_________개별 SQL 프로퍼티 방식
_________SQL 맵 프로퍼티 방식
______7.1.2 SQL 제공 서비스
_________SQL 서비스 인터페이스
_________스프링 설정을 사용하는 단순 SQL 서비스
___7.2 인터페이스의 분리와 자기 참조 빈
______7.2.1 XML 파일 매핑
_________JAXB
_________SQL 맵을 위한 스키마 작성과 컴파일
_________언마샬링
______7.2.2 XML 파일을 이용하는 SQL 서비스
_________SQL 맵 XML 파일
_________XML SQL 서비스
______7.2.3 빈의 초기화 작업
______7.2.4 변화를 위한 준비: 인터페이스 분리
_________책임에 따른 인터페이스 정의
_________SqlRegistry 인터페이스
_________SqlReader 인터페이스
______7.2.5 자기참조 빈으로 시작하기
_________다중 인터페이스 구현과 간접 참조
_________인터페이스를 이용한 분리
_________자기참조 빈 설정
______7.2.6 디폴트 의존관계
_________확장 가능한 기반 클래스
_________디폴트 의존관계를 갖는 빈 만들기
______7.3.1 OXM 서비스 추상화
___7.3 서비스 추상화 적용
_________OXM 서비스 인터페이스
_________JAXB 구현 테스트
_________Castor 구현 테스트
______7.3.2 OXM 서비스 추상화 적용
_________멤버 클래스를 참조하는 통합 클래스
_________위임을 이용한 BaseSqlService의 재사용
______7.3.3 리소스 추상화
_________리소스
_________리소스 로더
_________Resource를 이용해 XML 파일 가져오기
___7.4 인터페이스 상속을 통한 안전한 기능확장
______7.4.1 DI와 기능의 확장
_________DI를 의식하는 설계
_________DI와 인터페이스 프로그래밍
______7.4.2 인터페이스 상속
______7.5.1 ConcurrentHashMap을 이용한 수정 가능 SQL 레지스트리
_________수정 가능 SQL 레지스트리 테스트
___7.5 DI를 이용해 다양한 구현 방법 적용하기
_________수정 가능 SQL 레지스트리 구현
______7.5.2 내장형 데이터베이스를 이용한 SQL 레지스트리 만들기
_________스프링의 내장형 DB 지원 기능
_________내장형 DB 빌더 학습 테스트
_________내장형 DB를 이용한 SqlRegistry 만들기
_________UpdatableSqlRegistry 테스트 코드의 재사용
_________XML 설정을 통한 내장형 DB의 생성과 적용
______7.5.3 트랜잭션 적용
_________다중 SQL 수정에 대한 트랜잭션 테스트
_________코드를 이용한 트랜잭션 적용
___7.6 정리

8장 스프링이란 무엇인가?
___8.1 스프링의 정의
___8.2 스프링의 목적
______8.2.1 엔터프라이즈 개발의 복잡함
_________복잡함의 근본적인 이유
_________복잡함을 가중시키는 원인
______8.2.2 복잡함을 해결하려는 도전
_________제거될 수 없는 근본적인 복잡함
_________실패한 해결책: EJB
_________비침투적인 방식을 통한 효과적인 해결책: 스프링
______8.2.3 복잡함을 상대하는 스프링의 전략
_________기술적 복잡함을 상대하는 전략
_________비즈니스와 애플리케이션 로직의 복잡함을 상대하는 전략
_________핵심 도구: 객체지향과 DI
___8.3 POJO 프로그래밍
______8.3.1 스프링의 핵심: POJO
______8.3.2 POJO란 무엇인가?
______8.3.3 POJO의 조건
______8.3.4 POJO의 장점
______8.3.5 POJO 프레임워크
___8.4 스프링의 기술
______8.4.1 제어의 역전(IoC) / 의존관계 주입(DI)
_________DI의 활용 방법
______8.4.2 애스펙트 지향 프로그래밍(AOP)
_________AOP의 적용 기법
_________AOP의 적용 단계
_________8.4.3 포터블 서비스 추상화(PSA)
___8.5 요약

9장 스프링 프로젝트 시작하기
___9.1 자바 엔터프라이즈 플랫폼과 스프링 애플리케이션
______9.1.1 클라이언트와 백엔드 시스템
______9.1.2 애플리케이션 서버
_________스프링소스 tcServer
______9.1.3 스프링 애플리케이션의 배포 단위
___9.2 개발도구와 환경
______9.2.1 JavaSE와 JavaEE
_________JavaSE/JDK
_________JavaEE/J2EE
______9.2.2 IDE
______9.2.3 SpringSoruce Tool Suite
_________SpringIDE 플러그인
_________STS 플러그인
_________기타 플러그인
______9.2.4 라이브러리 관리와 빌드 툴
_________라이브러리 관리의 어려움
_________라이브러리 선정
_________빌드 툴과 라이브러리 관리
_________스프링 모듈의 두 가지 이름과 리포지토리
___9.3 애플리케이션 아키텍처
______9.3.1 계층형 아키텍처
_________아키텍처와 SoC
_________3계층 아키텍처와 수직 계층
_________계층형 아키텍처 설계의 원칙
______9.3.2 애플리케이션 정보 아키텍처
_________DB/SQL 중심의 로직 구현 방식
_________거대한 서비스 계층 방식
______9.3.3 오브젝트 중심 아키텍처
_________데이터와 오브젝트
_________도메인 오브젝트를 사용하는 코드
_________도메인 오브젝트 사용의 문제점
_________빈약한 도메인 오브젝트 방식
_________풍성한 도메인 오브젝트 방식
_________도메인 계층 방식
_________DTO와 리포트 쿼리
______9.3.4 스프링 애플리케이션을 위한 아키텍처 설계
_________계층형 아키텍처
_________정보 전송 아키텍처
_________상태 관리와 빈 스코프
_________서드파티 프레임워크, 라이브러리 적용
___9.4 정리

10장 IoC 컨테이너와 DI
___10.1 IoC 컨테이너: 빈 팩토리와 애플리케이션 컨텍스트
______10.1.1 IoC 컨테이너를 이용해 애플리케이션 만들기
_________POJO 클래스
_________설정 메타정보
______10.1.2 IoC 컨테이너의 종류와 사용 방법
_________StaticApplicationContext
_________GenericApplicationContext
_________GenericXmlApplicationContext
_________WebApplicationContext
______10.1.3 IoC 컨테이너 계층구조
_________부모 컨텍스트를 이용한 계층구조 효과
_________컨텍스트 계층구조 테스트
______10.1.4 웹 애플리케이션의 IoC 컨테이너 구성
_________웹 애플리케이션의 컨텍스트 계층구조
_________웹 애플리케이션의 컨텍스트 구성 방법
_________루트 애플리케이션 컨텍스트 등록
_________서블릿 애플리케이션 컨텍스트 등록
___10.2 IoC/DI를 위한 빈 설정 메타정보 작성
______10.2.1 빈 설정 메타정보
_________빈 설정 메타정보 항목
______10.2.2 빈 등록 방법
_________XML: 태그
_________XML: 네임스페이스와 전용 태그
_________자동인식을 이용한 빈 등록: 스테레오타입 애노테이션과 빈 스캐너
_________자바 코드에 의한 빈 등록: @Configuration 클래스의 @Bean 메소드
_________자바 코드에 의한 빈 등록: 일반 빈 클래스의 @Bean 메소드
_________빈 등록 메타정보 구성 전략
______10.2.3 빈 의존관계 설정 방법
_________XML: ,
_________XML: 자동와이어링
_________XML: 네임스페이스와 전용 태그
_________애노테이션: @Resource
_________애노테이션: @Autowired / @Inject
_________@Autowired와 getBean(), 스프링 테스트
_________자바 코드에 의한 의존관계 설정
_________빈 의존관계 설정 전략
______10.2.4 프로퍼티 값 설정 방법
_________메타정보 종류에 따른 값 설정 방법
_________PropertyEditor와 ConversionService
_________컬렉션
_________Null과 빈 문자열
_________프로퍼티 파일을 이용한 값 설정
______10.2.5 컨테이너가 자동등록하는 빈
_________ApplicationContext, BeanFactory
_________ResourceLoader, ApplicationEventPublisher
_________systemProperties, systenEnvironment
___10.3 프로토타입과 스코프
______10.3.1 프로토타입 스코프
_________프로토타입 빈의 생명주기과 종속성
_________프로토타입 빈의 용도
_________DI와 DL
_________프로토타입 빈의 DL 전략
______10.3.2 스코프
_________스코프의 종류
_________스코프 빈의 사용 방법
_________커스텀 스코프와 상태를 저장하는 빈 사용하기
___10.4 기타 빈 설정 메타정보
______10.4.1 빈 이름
_________XML 설정에서의 빈 식별자와 별칭
_________애노테이션에서의 빈 이름
______10.4.2 빈 생명주기 메소드
_________초기화 메소드
_________제거 메소드
______10.4.3 팩토리 빈과 팩토리 메소드
___10.5 정리

11장 데이터 액세스 기술
___11.1 공통 개념
______11.1.1 DAO 패턴
_________DAO 인터페이스와 DI
_________예외처리
______11.1.2 템플릿과 API
______11.1.3 DataSource
_________학습 테스트와 통합 테스트를 위한 DataSource
_________오픈소스 또는 상용 DB 커넥션 풀
_________JDNI/WAS DB 풀
___11.2 JDBC
______11.2.1 스프링 JDBC 기술과 동작원리
_________스프링의 JDBC 접근 방법
_________스프링 JDBC가 해주는 작업
______11.2.2 SimpleJdbcTemplate
_________SimpleJdbcTemplate 생성
_________SQL 파라미터
_________SQL 실행 메소드
_________SQL 조회 메소드
_________SQL 배치 메소드
______11.2.3 SimpleJdbcInsert
_________SimpleJdbcInsert 생성
_________SimpleJdbcInsert 실행
______11.2.4 SimpleJdbcCall
_________SimpleJdbcCall 생성
_________SimpleJdbcCall 실행
______11.2.5 스프링 JDBC DAO
___11.3 iBatis SqlMaps
______11.3.1 SqlMapClient 생성
_________iBatis 설정파일과 매핑파일
_________SqlMapClient를 위한 SqlMapClientFactoryBean 등록
______11.3.2 SqlMapClientTemplate
_________등록, 수정, 삭제
_________조회
_________SqlMapClientCallback
___11.4 JPA
______11.4.1 EntityManagerFactory 등록
_________LocalEntityManagerFactoryBean
_________JavaEE 5 서버가 제공하는 EntityManagerFactory
_________LocalContainerEntityManagerFactoryBean
_________트랜잭션 매니저
______11.4.2 EntityManager와 JpaTemplate
_________JpaTemplate
_________애플리케이션 관리 EntityManager와 @PersistenceUnit
_________컨테이너 관리 EntityManager와 @PersistenceContext
_________@PersistenceContext와 확장된 퍼시스턴스 컨텍스트
_________JPA 예외 변환
_________JPA 예외 변환 AOP
___11.5 하이버네이트
______11.5.1 SessionFactory 등록
_________LocalSessionFactoryBean
_________AnnotationSessionFactoryBean
_________트랜잭션 매니저
______11.5.2 Session과 HibernateTemplate
_________HibernateTemplate
_________SessionFactory.getCurrentSession()
___11.6 트랜잭션
______11.6.1 트랜잭션 추상화와 동기화
_________PlatformTransactionManager
_________트랜잭션 매니저의 종류
______11.6.2 트랜잭션 경계설정 전략
_________코드에 의한 트랜잭션 경계설정
_________선언적 트랜잭션 경계설정
_________프록시 모드: 인터페이스와 클래스
_________AOP 방식: 프록시와 AspectJ
______11.6.3 트랜잭션 속성
_________트랜잭션 전파: propagation
_________트랜잭션 고립도: isolation
_________트랜잭션 제한시간: Timeout
_________읽기전용 트랜잭션: read-only, readOnly
_________트랜잭션 롤백 예외: rollback-for, rollbackFor, rollbackForClassName
_________트랜잭션 커밋 예외: no-rollback-for, noRollbackFor,
noRollbackForClassName
______11.6.4 데이터 액세스 기술 트랜잭션의 통합
_________트랜잭션 매니저별 조합 가능 기술
_________ORM과 비 ORM DAO를 함께 사용할 때의 주의사항
______11.6.5 JTA를 이용한 글로벌/분산 트랜잭션
_________독립형 JTA 트랜잭션 매니저
_________WAS 트랜잭션 매니저의 고급 기능 사용하기
___11.7 정리

12장 스프링 웹 기술과 스프링 MVC
___12.1 스프링의 웹 프레젠테이션 계층 기술
______12.1.1 스프링에서 사용되는 웹 프레임워크의 종류
_________스프링 웹 프레임워크
_________스프링 포트폴리오 웹 프레임워크
_________스프링을 기반으로 두지 않는 웹 프레임워크
______12.1.2 스프링 MVC와 DispatcherServlet 전략
_________DispatcherServlet과 MVC 아키텍처
_________DispatcherServlet의 DI 가능한 전략
___12.2 스프링 웹 애플리케이션 환경 구성
______12.2.1 간단한 스프링 웹 프로젝트 생성
_________루트 웹 애플리케이션 컨텍스트
_________서블릿 웹 애플리케이션 컨텍스트 등록
_________스프링 웹 프로젝트 검증
______12.2.2 스프링 웹 학습 테스트
_________서블릿 테스트용 목 오브젝트
_________테스트를 위한 DispatcherServlet 확장
_________ConfigurableDispatcherServlet을 이용한 스프링 MVC 테스트
_________편리한 DispatcherServlet 테스트를 위한 AbstractDispatcherServletTest
1001
___12.3 컨트롤러
______12.3.1 컨트롤러의 종류와 핸들러 어댑터
_________Servlet과 SimpleServletHandlerAdapter
_________HttpRequestHandler와 HttpRequestHandlerAdapter
_________Controller와 SimpleControllerHandlerAdapter
_________AnnotationMethodHandlerAdapter
______12.3.2 핸들러 매핑
_________BeanNameUrlHandlerMapping
_________ControllerBeanNameHandlerMapping
_________ControllerClassNameHandlerMapping
_________SimpleUrlHandlerMapping
_________DefaultAnnotationHandlerMapping
_________기타 공통 설정정보
______12.3.3 핸들러 인터셉터
_________HandlerInterceptor
_________핸들러 인터셉터 적용
______12.3.4 컨트롤러 확장
_________커스텀 컨트롤러 인터페이스와 핸들러 어댑터 개발
___12.4 뷰
______12.4.1 뷰
_________InternalResourceView와 JstlView
_________RedirectView
_________VelocityView, FreeMarkerView
_________MarshallingView
_________AbstractExcelView, AbstractJExcelView, AbstractPdfView
_________AbstractAtomFeedView, AbstractRssFeedView
_________XsltView, TilesView, AbstractJasperReportsView
_________MappingJacksonJsonView
______12.4.2 뷰 리졸버
_________InternalResourceViewResolver
_________VelocityViewResolver, FreeMarkerViewResolver
_________ResourceBundlerViewResolver, XmlViewResolver, BeanNameViewResolver
_________ContentNegotiatingViewResolver
___12.5 기타 전략
______12.5.1 핸들러 예외 리졸버
_________AnnotationMethodHandlerExceptionResolver
_________ResponseStatusExceptionResolver
_________DefaultHandlerExceptionResolver
_________SimpleMappingExceptionResolver
______12.5.2 지역정보 리졸버
______12.5.3 멀티파트 리졸버
_________RequestToViewNameTranslator
___12.6 정리

13장 스프링 @MVC
___13.1 @RequestMapping 핸들러 매핑
______13.1.1 클래스/메소드 결합 매핑정보
_________@RequestMapping 애노테이션
_________타입 레벨 매핑과 메소드 레벨 매핑의 결합
_________메소드 레벨 단독 매핑
_________타입 레벨 단독 매핑
______13.1.2 타입 상속과 매핑
_________매핑정보 상속의 종류
_________제네릭스와 매핑정보 상속을 이용한 컨트롤러 작성
___13.2 @Controller
______13.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
______13.2.2 리턴 타입의 종류
_________자동 추가 모델 오브젝트와 자동생성 뷰 이름
_________ModelAndView
_________String
_________void
_________모델 오브젝트
_________Map/Model/ModelMap
_________View
_________@ResponseBody
______13.2.3 @SessionAttributes와 SessionStatus
_________도메인 중심 프로그래밍 모델과 상태 유지를 위한 세션 도입의 필요성
_________@SessionAttributes
_________SessionStatus
_________등록 폼을 위한 @SessionAttributes 사용
_________스프링 목 오브젝트와 AbstractDispacherServletTest를 이용해 세션 테스트 만
들기
___13.3 모델 바인딩과 검증
______13.3.1 PropertyEditor
_________디폴트 프로퍼티 에디터
_________커스텀 프로퍼티 에디터
_________@InitBinder
_________WebBindingInitializer
_________프로토타입 빈 프로퍼티 에디터
______13.3.2 Converter와 Formatter
_________Converter
_________ConversionService
_________Formatter와 FormattingConversionService
_________바인딩 기술의 적용 우선순위와 활용 전략
______13.3.3 WebDataBinder 설정 항목
_________allowedFields, disallowedFields
_________requiredFields
_________fieldMarkerPrefix
_________fieldDefaultPrefix
______13.3.4 Validator와 BindingResult, Errors
_________Validator
_________JSR-303 빈 검증 기능
_________BindingResult와 MessageCodeResolver
_________MessageSource
______13.3.5 모델의 일생
_________HTTP 요청으로부터 컨트롤러 메소드까지
_________컨트롤러 메소드로부터 뷰까지
___13.4 JSP 뷰와 form 태그
______13.4.1 EL과 spring 태그 라이브러리를 이용한 모델 출력
_________JSP EL
_________스프링 SpEL
_________지역화 메시지 출력
______13.4.2 spring 태그 라이브러리를 이용한 폼 작성
_________단일 폼 모델
___과 BindingStatus
___13.4.3 form 태그 라이브러리
___
_________
_________
_________
_________
_________,
_________,
_________,
_________, ,
______커스텀 UI 태그 만들기
___13.5 메시지 컨버터와 AJAX
______13.5.1 메시지 컨버터의 종류
_________JSON을 이용한 AJAX 컨트롤러: GET + JSON
_________JSON을 이용한 AJAX 컨트롤러: POST(JSON) + JSON
___13.6 mvc 네임스페이스
_________
_________
_________
___13.7 @MVC 확장 포인트
______13.7.1 AnnotationMethodHandlerAdapter
_________SessionAttributeStore
_________WebArgumentResolver
_________ModelAndViewResolver
___13.8 정리

14장 AOP와 LTW
___14.1 애스펙트 AOP
______14.1.1 프록시 기반 AOP
_________프록시 기반 AOP 개발 스타일의 종류와 특징
_________자동 프록시 생성기와 프록시 빈
_________프록시의 종류
______14.1.2 @AspectJ AOP
_________@AspectJ를 이용하기 위한 준비사항
_________@Aspect 클래스와 구성요소
_________포인트컷 메소드와 애노테이션
_________어드바이스 메소드와 애노테이션
_________파라미터 선언과 바인딩
_________@AspectJ를 이용한 AOP의 학습 방법과 적용 전략
___14.2 AspectJ와 @Configurable
______14.2.1 AspectJ AOP
______14.2.2 빈이 아닌 오브젝트에 DI 적용하기
_________DI 애스펙트
_________@Configurable
_________로드타임 위버와 자바 에이전트
___14.3 로드타임 위버(LTW)

15장 컨텍스트 테스트 프레임워크
___15.1 컨텍스트 테스트 프레임워크
______15.1.1 테스트 프레임워크와 컨텍스트 테스트
_________테스트용 애플리케이션 컨텍스트 캐싱과 설정파일
_________컨텍스트 설정의 상속과 컨텍스트 로더
______15.1.2 테스트 코드의 테스트 컨텍스트 활용
_________테스트 컨텍스트로부터 DI 받기
_________공유 컨텍스트 사용 시 주의할 점
______15.2.1 테스트의 트랜잭션 지원 필요성
_________DAO 단독 테스트
___15.2 트랜잭션 지원 테스트
_________롤백 테스트
______15.2.2 트랜잭션 지원 테스트 작성 방법
_________트랜잭션 매니저
_________@Transactional 테스트
_________ORM 롤백 트랜잭션 테스트의 주의사항
_________트랜잭션 지원 테스트에 DBUnit 이용하기
___15.3 정리

16장 스프링의 기타 기술과 효과적인 학습 방법
___16.1 스프링 기술과 API를 효과적으로 학습하는 방법
______16.1.1 빈으로 등록되는 스프링 클래스와 DI
_________구현 인터페이스 분석
_________프로퍼티 분석
_________DI/확장 포인트 분석
___16.2 IoC 컨테이너 DI
______16.2.1 BeanPostProcessor와 BeanFactoryPostProcessor
_________BeanPostProcessor
_________BeanFactoryPostProcessor
___16.3 SpEL
______16.3.1 SpEL 사용 방법
___16.4 OXM
______16.4.1 Marshaller/Unmarshaller 인터페이스
______16.4.2 OXM 기술 어댑터 클래스
___16.5 리모팅과 웹 서비스, EJB
______16.5.1 익스포터와 프록시
_________익스포터
_________프록시
______16.5.2 RESTful 서비스 템플릿
______16.5.3 EJB 서비스 이용
______16.6.1 TaskExecutor 서비스 추상화
___16.6 태스크 실행과 스케줄링
______16.6.2 TaskScheduler
______16.6.3 task 네임스페이스
_________
_________
_________
______16.6.4 애노테이션을 이용한 스케줄링과 비동기 태스크 실행
_________@Scheduled
_________@Async
___16.7 정리

부록 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.1 필수 라이브러리
______B.2.2 모듈별 선택 라이브러리
___B.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 모듈

저자소개

이일민 (지은이)    정보 더보기
호주의 IT 서비스 기업인 이프릴의 대표 컨설턴트다. 엔터프라이즈 오픈소스 커뮤니티인 오픈시드의 대표이며 한국스프링사용자모임(KSUG)의 공동설립자이기도 하다. 8비트 컴퓨터 시절 프로그래밍의 매력에 빠져 10여 년간 취미로 프로그래밍을 즐겨오다 전문 개발자의 길로 들어서서 19년째 소프트웨어 개발과 교육, 컨설팅 일을 해오고 있다. 2004년부터 스프링을 이용해서 기업과 학교, 인터넷 서비스 업체의 시스템을 개발해왔고 스프링을 기반으로 한 애플리케이션 프레임워크 제작 컨설팅과 스프링 개발자 교육을 해오고 있다. JCO 컨퍼런스에서 세 차례 스프링을 주제로 발표했고 기묘, 이프릴, KSUG 등을 통해 스프링 세미나를 진행하기도 했다. 스프링과 오픈소스 기술에 관련된 정보와 경험을 공유하는 블로그 (toby.epril.com)를 운영하고 있다.
펼치기

추천도서

이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책