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

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

토비의 스프링 3.1 Vol. 2

토비의 스프링 3.1 Vol. 2

(스프링의 기술과 선택)

이일민 (지은이)
  |  
에이콘출판
2012-09-21
  |  
40,000원

일반도서

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

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
aladin 28,000원 -10% 1400원 23,800원 >

책 이미지

토비의 스프링 3.1 Vol. 2

책 정보

· 제목 : 토비의 스프링 3.1 Vol. 2 (스프링의 기술과 선택)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 프로그래밍 기초/개발 방법론
· ISBN : 9788960773424
· 쪽수 : 840쪽

책 소개

스프링을 처음 접하거나 스프링을 경험했지만 스프링이 어렵게 느껴지는 개발자부터 스프링을 활용한 아키텍처를 설계하고 프레임워크를 개발하려고 하는 아키텍트에 이르기까지 모두 참고할 수 있는 스프링 완벽 바이블이다.

목차

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: 태그
_________XML: 네임스페이스와 전용 태그
_________자동인식을 이용한 빈 등록: 스테레오타입 애노테이션과 빈 스캐너
_________자바 코드에 의한 빈 등록: @Configuration 클래스의 @Bean 메소드
_________자바 코드에 의한 빈 등록: 일반 빈 클래스의 @Bean 메소드
_________빈 등록 메타정보 구성 전략
______1.2.3 빈 의존관계 설정 방법
_________XML: ,
_________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 태그 라이브러리를 이용한 폼 작성
_________단일 폼 모델
_________와 BindingStatus
______4.4.3 form 태그 라이브러리
_________
_________
_________
_________
_________
_________,
_________,
_________,
_________, ,
_________커스텀 UI 태그 만들기
___4.5 메시지 컨버터와 AJAX
______4.5.1 메시지 컨버터의 종류
_________JSON을 이용한 AJAX 컨트롤러: GET + JSON
_________JSON을 이용한 AJAX 컨트롤러: POST(JSON) + JSON
___4.6 mvc 네임스페이스
_________
_________
_________
___4.7 @MVC 확장 포인트
______4.7.1 AnnotationMethodHandlerAdapter
_________SessionAttributeStore
_________WebArgumentResolver
_________ModelAndViewResolver
___4.8 URL과 리소스 관리
______4.8.1 를 이용한 URL 관리
_________디폴트 서블릿과 URL 매핑 문제
_________
______4.8.2 를 이용한 리소스 관리
___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 네임스페이스
_________
_________
_________
______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 모듈

저자소개

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

추천도서

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