시작하세요 스프링 4 프로그래밍
도서명:시작하세요 스프링 4 프로그래밍
저자/출판사:애쉬쉬,사린,제이,샤마/위키북스
쪽수:592쪽
출판일:2014-08-20
ISBN:9788998139643
목차
▣ 01장: 스프링 프레임워크 소개
1-1 소개
1-2 스프링 프레임워크 모듈
1-3 스프링 IoC 컨테이너
1-4 스프링 프레임워크의 장점
- 로컬 및 전역 트랜잭션을 일관된 방법으로 관리
- 선언식 트랜잭션 관리
- 보****
- JMX(Java Management Extensions)
- JMS(Java Message Service)
- 캐시
1-5 간단한 스프링 애플리케이션
애플리케이션 객체와 그것의 의존성 식별하기
식별한 애플리케이션 객체에 해당하는 POJO 클래스 만들기
구성 메타데이터 작성
스프링 컨테이너의 인스턴스 생성
스프링 컨테이너의 빈에 접근하기
1-6 스프링 기반의 다른 프레임워크 프로젝트
1-7 요약
▣ 02장: 스프링 프레임워크 기초
2-1 소개
2-2 인터페이스 기반 프로그래밍 설계 원칙
- 시나리오: 의존 클래스가 의존성의 구상 클래스를 참조하는 경우
- 시나리오: 의존 클래스가 의존성이 구현하는 인터페이스 참조를 사용하는 경우
- 인터페이스 기반 프로그래밍 설계 방법을 위한 스프링 지원
2-3 스프링 빈을 인스턴스화하는 다른 방법
- 정적 팩터리 메서드를 이용한 빈 인스턴스화
- 인스턴스 팩터리 메서드를 이용한 빈 인스턴스화
2-4 의존성 주입 기법
- 세터 기반 DI
- 생성자 기반 DI
2-5 빈의 범위
- 싱글톤
- 프로토타입
- 빈의 올바른 범위 선택
2-6 요약
▣ 03장: 빈 구성
3-1 소개
3-2 빈 정의 상속
- MyBank: 빈 정의 상속 예제
- 상속되는 정보
3-3 생성자 인자 연결
-
요소를 이용한 간단한 값 및 빈 참조 전달
- 형식을 기준으로 한 생성자 인자 연결
- 이름을 기준으로 한 생성자 인자 연결
3-4 다른 형식의 빈 속성 및 생성자 인자 구성
- 스프링에서 기본 제공하는 속성 편집기
- 다양한 컬렉션 형식의 값 지정
- 배열의 값 지정
-
,
,
요소의 기본 컬렉션 구현
3-5 기본 제공되는 속성 편집기
- CustomCollectionEditor
- CustomMapEditor
- CustomDateEditor
3-6 스프링 컨테이너에 속성 편집기 등록하기
- PropertyEditorRegistrar 구현 만들기
- CustomEditorConfigurer 클래스 구성
3-7 p 및 c 네임스페이스를 이용해 간결하게 빈 정의 작성하기
- p 네임스페이스
- c 네임스페이스
3-8 스프링의 util 스키마
-
-
- MapFactoryBean
-
-
-
3-9 FactoryBean 인터페이스
- MyBank 애플리케이션: 데이터베이스에 이벤트 저장하기
- MyBank: FactoryBean 예제
- 팩터리 빈 인스턴스에 접근하기
3-10 요약
▣ 04장: 의존성 주입
4-1 소개
4-2 내부 빈
4-3 depends-on 특성을 이용한 명시적인 빈 초기화 순서 지정
- MyBank: 빈 간의 암시적 의존성
- 암시적 의존성 문제
4-4 싱글톤 및 프로토타입 범위 빈의 의존성
- 싱글톤 범위 빈의 의존성
- 프로토타입 범위 빈의 의존성
4-5 싱글톤 빈에서 프로토타입 빈의 새 인스턴스 얻기
- ApplicationContextAware 인터페이스
-
요소
-
요소
4-6 의존성 자동 연결
- byType
- constructor
- byName
- default/no
- 빈을 자동 연결에서 제외
- 자동 연결의 제한
4-7 요약
▣ 05장: 빈과 빈 정의의 사용자 지정
5-1 소개
5-2 빈 초기화 및 삭제 논리 사용자 지정
- 스프링이 destory-method 특성으로 지정된 정리 메서드를 호출하게 하는 방법
- 프로토타입 범위 빈의 정리 메서드
- 모든 빈의 기본 빈 초기화 및 삭제 메서드 지정
- InitializingBean 및 DisposableBean 수명 주기 인터페이스
- JSR 250의 @PostConstruct 및 @PreDestroy 어노테이션
5-3 BeanPostProcessor를 이용해 새로 생성된 빈 인스턴스와 상호작용하기
- BeanPostProcessor 예제 - 빈 인스턴스의 유효성 검사
- BeanPostProcessor 예제 - 빈 의존성 처리
- FactoryBean에 대한 BeanPostProcessor의 동작 방식
- RequiredAnnotationBeanPostProcessor
- DestructionAwareBeanPostProcessor
5-4 BeanFactoryPostProcessor를 활용한 빈 정의 수정
- BeanFactoryPostProcessor 예제
- PropertySourcesPlaceholderConfigurer
- PropertyOverrideConfigurer
5-5 요약
▣ 06장: 스프링 어노테이션 기반 개발
6-1 소개
6-2 @Component를 이용한 스프링 컴포넌트 지정
6-3 @Autowired - 형식을 기준으로 한 의존성 자동 연결
6-4 @Qualifier - 이름을 기준으로 한 의존성 자동 연결
6-5 JSR 330의 @Inject 및 @Named 어노테이션
6-6 JSR 250의 @Resource 어노테이션
6-7 @Scope, @Lazy, @DependsOn, @Primary 어노테이션
6-8 @Value 어노테이션을 이용한 컴포넌트 구성 간소화
6-9 스프링 Validator 인터페이스를 이용한 객체의 유효성 검사
6-10 JSR 303 어노테이션을 이용한 제약 조건 지정
- 스프링의 JSR 303 지원
6-11 @Configuration 및 @Bean 어노테이션을 이용한 프로그래밍 방식의 스프링 빈 구성
6-12 요약
▣ 07장: 스프링을 이용한 데이터베이스와의 상호작용
7-1 소개
7-2 MyBank 애플리케이션의 요구사항
7-3 스프링의 JDBC 모듈을 활용한 MyBank 애플리케이션 개발
- 데이터 원본 구성
- 스프링의 JDBC 모듈 클래스를 사용하는 DAO 작성
7-4 하이버네이트를 이용한 MyBank 애플리케이션 개발
- SessionFactory 인스턴스 구성
- 하이버네이트 API를 이용해 데이터베이스 상호작용을 수행하는 DAO 작성
7-5 스프링을 이용한 트랜잭션 관리
- MyBank의 트랜잭션 관리 요구사항
- 프로그래밍 방식의 트랜잭션 관리
- 선언식 트랜잭션 관리
- 스프링의 JTA 지원
7-6 요약
▣ 08장: 스프링을 이용한 메시징, 이메일 전송, 비동기 메시지 실행 및 캐싱
8-1 소개
8-2 MyBank 애플리케이션의 요구사항
8-3 JMS 메시지 전송
- ActiveMQ 브로커를 임베디드 모드로 실행하도록 구성
- JMS ConnectionFactory 구성
- JmsTemplate을 이용한 JMS 메시지 전송
- 단일 트랜잭션 내에서 JMS 메시지 전송
- 동적 JMS 대상 및 JmsTemplate 구성
- JmsTemplate과 메시지 변환
8-4 JMS 메시지 수신
- JmsTemplate을 이용해 동기식으로 JMS 메시지 수신하기
- 메시지 수신자 컨테이너를 이용해 비동기식으로 JMS 메시지 수신하기
8-5 이메일 전송
8-6 작업 예약 및 비동기 실행
- TaskExecutor 인터페이스
- TaskScheduler 인터페이스
- @Async 및 @Scheduled 어노테이션
8-7 캐싱
- CacheManager 구성
- 캐싱 어노테이션 - @Cacheable, @CacheEvict, @CachePut
- @Cacheable
8-8 MyBank 애플리케이션 실행
8-9 요약
▣ 09장: 관점 지향 프로그래밍
9-1 소개
9-2 간단한 AOP 예제
9-3 스프링 AOP 프레임워크
- 프록시 생성
- expose-proxy 특성
9-4 포인트컷 식
- @Pointcut 어노테이션
- execution 및 args 포인트컷 지정자
- bean 포인트컷 지정자
- 어노테이션 기반 포인트컷 지정자
9-5 어드바이스 유형
- 사전 어드바이스
- 반환 후 어드바이스
- 예외 후 어드바이스
- 사후 어드바이스
- 전후 어드바이스
9-6 스프링 AOP - XML 스키마 스타일
- AOP 관점의 구성
- 어드바이스 구성
- 반환 후 어드바이스 구성
- 포인트컷 식과 어드바이스 연결
9-7 요약
▣ 10장: 스프링 웹 MVC 기초
10-1 소개
10-2 샘플 웹 프로젝트의 디렉터리 구조
10-3 ‘Hello World’ 웹 애플리케이션의 이해
- HelloWorldController.java: Hello World 웹 애플리케이션의 컨트롤러 클래스
- helloworld.j네: ‘Hello World !!’ 메시지를 보여주는 JSP 페이지
- myapp-config.xml: 웹 애플리케이션 컨텍스트 XML 파일
- web.xml: 웹 애플리케이션 배포 설명자
10-4 DispatcherServlet - 프런트 컨트롤러
- ServletContext 및 ServletConfig 객체 접근
10-5 @Controller 및 @RequestMapping 어노테이션을 이용한 컨트롤러 개발
- 어노테이션이 지정된 컨트롤러를 활용한 ‘Hello World’ 웹 애플리케이션 개발
- @Controller 및 @RequestMapping 어노테이션
- 스프링 웹 MVC 어노테이션 활성화
10-6 MyBank 웹 애플리케이션의 요구사항
10-7 스프링 MVC 어노테이션 - @RequestMapping 및 @RequestParam
- @RequestMapping을 이용해 요청을 컨트롤러 또는 컨트롤러 메서드로 연결하기
- @RequestMapping 어노테이션이 지정된 메서드의 인자
- @RequestMapping 어노테이션이 지정된 메서드의 반환 형식
- @RequestParam을 이용해 요청 매개변수를 컨트롤러 메서드로 전달하기
- 모든 요청 매개변수를 컨트롤러 메서드로 전달
- value 특성을 이용한 요청 매개변수의 이름 지정
- required 특성을 이용한 요청 매개변수의 필수 여부 지정
- defaultValue 특성을 이용한 요청 매개변수의 기본값 지정
10-8 유효성 검사
10-9 @ExceptionHandler 어노테이션을 이용한 예외 처리
10-10 루트 웹 애플리케이션 컨텍스트 XML 파일 로딩
10-11 요약
▣ 11장: 스프링 웹 MVC에서의 유효성 검사 및 데이터 바인딩
11-1 소개
11-2 @ModelAttribute 특성으로 모델 특성 추가 및 검색
- 메서드 단계의 @ModelAttribute 어노테이션을 이용한 모델 특성 추가
- @ModelAttribute 어노테이션을 이용해 모델 특성 가져오기
- 요청 처리와 @ModelAttribute 어노테이션이 지정된 메서드
- @ModelAttribute 어노테이션이 지정된 메서드 인자의 동작 방식
- RequestToViewNameTranslator
11-3 @SessionAttributes 어노테이션으로 모델 특성 캐싱하기
11-4 스프링에서의 데이터 바인딩
- WebDataBinder: 웹 요청 매개변수를 위한 데이터 바인더
- WebDataBinder 인스턴스 구성
- @ControllerAdvice 어노테이션이 지정된 클래스에서 @InitBinder 어노테이션이 지정된 메서드 정의하기
- 데이터 바인딩 프로세스에 필드 포함/제외
- BindingResult 객체를 이용한 데이터 바인딩 및 유효성 검사의 오류 조사
11-5 스프링의 유효성 검사 지원
- 스프링 Validator 인터페이스를 이용한 모델 특성의 유효성 검사
- JSR 303 어노테이션을 이용한 제약 조건 지정
- JSR 303 어노테이션을 이용한 객체의 유효성 검사
- JSR 303의 @Valid 어노테이션을 이용한 모델 특성의 유효성 검사
11-6 스프링 form 태그 라이브러리
- 스프링 form 태그 라이브러리의 HTML5 지원
11-7 요약
▣ 12장: 스프링 웹 MVC를 이용한 RESTful 웹 서비스 개발
12-1 소개
12-2 정기 예금 웹 서비스
12-3 스프링 웹 MVC를 이용한 RESTful 웹 서비스 구현
- JSON(JavaScript Object Notation)
- FixedDepositWS 웹 서비스 구현
12-4 RestTemplate을 이용한 RESTful 웹 서비스 접근
12-5 HttpMessageConverter를 이용한 자바 객체 및 HTTP 요청/응답 간 변환
12-6 @PathVariable 및 @MatrixVariable 어노테이션
12-7 요약
▣ 13장: 스프링 웹 MVC 활용 - 국제화, 파일 업로드 및 비동기 요청 처리
13-1 소개
13-2 핸들러 인터셉터를 통한 요청의 사전 및 사후 처리
- 핸들러 인터셉터 구현 및 구성
13-3 리소스 번들을 이용한 국제화
- MyBank 웹 애플리케이션의 요구사항
- MyBank 웹 애플리케이션의 국제화 및 지역화
13-4 비동기식 요청 처리
- 비동기 요청 처리 구성
- Callable을 반환하는 @RequestMapping 어노테이션이 지정된 메서드
- DeferredResult를 반환하는 @RequestMapping 어노테이션이 지정된 메서드
- DeferredResult 인스턴스의 결과 계산
- 기본 시간 제한 값 설정
- 비동기 요청 가로채기
13-5 스프링의 형변환 및 서식 지정 지원
- 사용자 지정 변환기 만들기
- 사용자 지정 변환기 구성 및 사용
- 사용자 지정 포매터 만들기
- 사용자 지정 포매터 구성
- AnnotationFormatterFactory를 생성해 @AmountFormat 어노테이션이 지정된 필드에만 서식 지정하기
- AnnotationFormatterFactory 구현 구성
13-6 스프링 웹 MVC의 파일 업로드 지원
- CommonsMultipartResolver를 이용한 파일 업로드
- StandardServletMultipartResolver를 이용한 파일 업로드
13-7 요약
▣ 14장: 스프링 시큐리티를 이용한 애플리케이션의 보****구현
14-1 소개
14-2 MyBank 웹 애플리케이션의 보****요구사항
14-3 스프링 시큐리티를 이용한 MyBank 웹 애플리케이션의 보****구현
- 웹 요청 보****구성
- 인증 구성
- 스프링 시큐리티의 JSP 태그 라이브러리를 이용한 JSP 콘텐츠 보호
- 메서드 보호
14-4 MyBank 웹 애플리케이션 - 스프링 시큐리티의 ACL 모듈을 이용한 FixedDepositDetails 인스턴스 보호
- ch14-bankapp-db-security 프로젝트 배포 및 사용
- ACL과 사용자 정보를 저장하는 데이터베이스 테이블
- 사용자 인증
- 웹 요청 보****
- JdbcMutableAclService 구성
- 메서드 단계 보****구성
- 도메인 객체 인스턴스 보****
- 프로그래밍 방식의 ACL 항목 관리
- MutableAcl과 보****
14-5 요약
▣ 부록 A: 이클립스 IDE(또는 인텔리제이 IDEA)로 샘플 프로젝트 가져오기 및 배포
A-1 개발 환경 설정
A-2 이클립스 IDE(또는 인텔리제이 IDEA)로 샘플 프로젝트 가져오기
- 샘플 프로젝트 가져오기
- 이클립스 IDE에서 M2_REPO 클래스 경로 변수 구성
A-3 톰캣 7 서버와 함께 작동하도록 이클립스 IDE 구성하기
A-4 톰캣 7 서버로 웹 프로젝트 배포하기
- 임베디드 모드에서 톰캣 7 서버 실행