• 시작하세요! 스프링 4 프로그래밍
  • 스프링 코어부터 웹 MVC, 스프링 시큐리티까지

  • 애쉬쉬 사린, 제이 샤마 지음
  • 최민석 옮김

  • 오픈소스 & 웹 시리즈 _ 063
  • ISBN: 9788998139643
  • 30,000원 | 2014년 08월 20일 발행 | 592쪽



스프링 프레임워크 4의 모든 것!

『시작하세요! 스프링 4 프로그래밍』는 이제 자바 엔터프라이즈 개발의 핵심 프레임워크로 자리 잡은 스프링을 기반으로 한 개발 방법을 소개하는 실습 안내서로서 아직 스프링에 대한 경험이 많지 않은 독자들에 맞게 구성돼 있다.

스프링을 이해하기 위한 기본 개념을 친절하게 설명했으며 엔터프라이즈 애플리케이션 개발의 다양한 과제와 이를 해결하는 스프링 프레임워크 기능을 연계해서 설명하고 배운 내용을 실습으로 확인할 수 있게 정교하게 구성된 단계별 예제를 마련했다.

세심하게 배려된 구성과 단계를 따라 하다 보면 스프링 프레임워크의 기본 개념과 활용법을 확실하게 이해할 수 있을 것이다.

 

위키북스 페이스북 페이지 소개 자료

『시작하세요! 스프링 4 프로그래밍』은 스프링 프레임워크를 이용해 애플리케이션 개발을 시작하기 위한 실습 안내서로서 스프링 프레임워크를 처음 접하거나 아직 경험이 많지 않은 독자들에 맞게 구성돼 있다. 이 책의 모든 예제는 스프링 4를 사용한다.

★ 이 책에서 다루는 내용 ★

  • XML과 어노테이션을 이용한 구성 메타데이터 지정
  • 프로그래밍 방식으로 스프링 컨테이너와 빈 구성
  • 다양한 빈 속성 유형 구성
  • 빈 수명 주기 인터페이스
  • BeanPostProcessor와 BeanFactoryPostProcessor를 이용한 빈 사용자 지정
  • 빈 정의 상속
  • JSR 250과 330의 어노테이션을 이용한 의존성 주입
  • JSR 303(빈 유효성 검사 API) 어노테이션과 스프링 Validator 인터페이스를 이용한 유효성 검사
  • SpEL(Spring Expression Language)
  • 스프링 캐시 추상화를 이용한 캐싱
  • 스프링을 이용한 JMS 메시지 송수신
  • 스프링의 관점 지향 프로그래밍 지원
  • 스프링을 이용한 이메일 전송
  • 스프링을 이용한 메서드 비동기 실행
  • 작업 예약
  • JDBC와 하이버네이트를 이용한 데이터베이스 상호작용
  • 프로그래밍 방식 및 선언식 트랜잭션 관리
  • 스프링 웹 MVC
  • 스프링을 이용한 RESTful 웹 서비스 개발
  • 스프링 시큐리티

애쉬쉬 사린(Ashish Sarin)

애쉬쉬 사린은 애플리케이션 설계 분야에서 14년 이상의 경험을 보유한 썬 인증 엔터프라이즈 설계자다. 저서로는 Spring Roo 1.1 Cookbook(Packt Publishing)과 Portlets in Action(Manning Publications)이 있다.

제이 샤마(J Sharma)

제이 샤마는 스프링 애플리케이션 개발에 대한 광범위한 경험을 갖춘 프리랜서 자바 개발자다.

최민석

번역회사에서 언어전문가로 일하다 뜻하는 바를 이루기 위해 프리랜서로 독립해서 현재는 전문 번역가로 일하고 있다. 주로 IT 관련 소프트웨어의 현지화와 개발자 웹 사이트 관련 프로젝트를 진행하고 있으며 앞으로 개발자 서적 분야에서 작은 변화를 일으키고 싶다는 소박한 소망을 하고 있다. 번역가의 고민은 독자의 고민과 반비례한다는 믿음으로 오늘도 기꺼이 고민할 준비가 돼 있다.

  • ▣ 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 생성자 인자 연결
      • <constructor-arg> 요소를 이용한 간단한 값 및 빈 참조 전달
      • 형식을 기준으로 한 생성자 인자 연결
      • 이름을 기준으로 한 생성자 인자 연결
    • 3-4 다른 형식의 빈 속성 및 생성자 인자 구성
      • 스프링에서 기본 제공하는 속성 편집기
      • 다양한 컬렉션 형식의 값 지정
      • 배열의 값 지정
      • <list>, <set>, <map> 요소의 기본 컬렉션 구현
    • 3-5 기본 제공되는 속성 편집기
      • CustomCollectionEditor
      • CustomMapEditor
      • CustomDateEditor
    • 3-6 스프링 컨테이너에 속성 편집기 등록하기
      • PropertyEditorRegistrar 구현 만들기
      • CustomEditorConfigurer 클래스 구성
    • 3-7 p 및 c 네임스페이스를 이용해 간결하게 빈 정의 작성하기
      • p 네임스페이스
      • c 네임스페이스
    • 3-8 스프링의 util 스키마
      • <list>
      • <map>
      • MapFactoryBean
      • <properties>
      • <constant>
      • <property-path>
    • 3-9 FactoryBean 인터페이스
      • MyBank 애플리케이션: 데이터베이스에 이벤트 저장하기
      • MyBank: FactoryBean 예제
      • 팩터리 빈 인스턴스에 접근하기
    • 3-10 요약
  •  
  • ▣ 04장: 의존성 주입
    • 4-1 소개
    • 4-2 내부 빈
    • 4-3 depends-on 특성을 이용한 명시적인 빈 초기화 순서 지정
      • MyBank: 빈 간의 암시적 의존성
      • 암시적 의존성 문제
    • 4-4 싱글톤 및 프로토타입 범위 빈의 의존성
      • 싱글톤 범위 빈의 의존성
      • 프로토타입 범위 빈의 의존성
    • 4-5 싱글톤 빈에서 프로토타입 빈의 새 인스턴스 얻기
      • ApplicationContextAware 인터페이스
      • <lookup-method> 요소
      • <replaced-method> 요소
    • 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 서버 실행

이 책에서 사용한 용어 표기

원서 용어 번역서 표기
attribute 특성
property 속성
  • p. 428, 예제 11-4

    public SomeObjectdoSomething() --> public SomeObject doSomething()

  • p. 426, 맨 밑줄

    모델 특성의 범위는 요청이므로 --> 모델 특성의 범위는 request이므로

예제코드 관련 GitHub 페이지

도서 소개 자료