스프링 8

[토비의 스프링] 9장: 스프링 프로젝트 시작하기

토비의 스프링: Vol. 1: 스프링의 이해와 원리 스프링은 주로 자바 엔터프라이즈 환경에서 동작하는 애플리케이션을 개발하는 목적으로 사용됨 아키텍처: 어떤 경계 안에 있는 내부 구성요소들이 어떤 책임을 갖고 있고, 어떤 방식으로 서로 관계를 맺고 동작하는지를 규정하는 것 시스템 레벨 아키텍처 결정하기 스프링 엔터프라이즈 애플리케이션의 서비스와 협력 구조 애플리케이션 서버 스프링으로 만든 애플리케이션을 자바 서버환경에 배포하려면 JavaEE(.J2EE) 서버가 필요함 JavaEE 서버 종류 WAS(Web Application Server): 완전한 웹 애플리케이션 서버 경량급 WAS / 서블릿 컨테이너: 톰캣(Tomcat) 등의 가벼운 서블릿 컨테이너 실제 개발환경과 운영환경에서 가장 많이 사용되는 자바..

[토비의 스프링] 8장: 스프링이란 무엇인가?

토비의 스프링: Vol. 1: 스프링의 이해와 원리 스프링의 정의 스프링의 정의: 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 애플리케이션 프레임워크: 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크 스프링의 일차적인 존재 목적: 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역에 전략과 기능을 제공해줌으로써 애플리케이션을 편리하게 개발하게 해주는 애플리케이션 프레임워크 경량급: 군더더기 없이 깔끔한 기술을 가진 프레임워크 자바 엔터프라이즈 개발을 편하게: 개발자가 복잡하고 실수하기 쉬운 로우레벨 기술에 많은 신경을 쓰지 않으면서도 애플리케이션의 핵심인 사용자의 요구사..

[토비의 스프링] 7장: 스프링 핵심 기술의 응용

토비의 스프링: Vol. 1: 스프링의 이해와 원리 스프링의 3대 핵심 기술 IoC/DI 서비스 추상화 AOP 스프링이 가장 가치를 두고 적극적으로 활용하려고 하는 것은 결국 자바 언어가 기반을 두고 있는 객체지향 기술 리소스 변환 DI JAXB(Java Architecture for XML Binding): XML를 동일한 구조의 오브젝트로 매핑해줌 언마샬링(unmarshalling): XML 문서를 읽어서 자바의 오브젝트로 변환 마샬링(marshalling): 바인딩 오브젝트를 XML 문서로 변환 스프링에서는 자신을 참조하는 자기참조 빈을 만들 수 있음 디폴트 의존관계: 외부에서 DI 받지 않는 경우 기본적으로 자동 적용되는 의존관계 서비스 추상화 OXM(Object-XML Mapping): XML과..

[토비의 스프링] 6장: AOP

토비의 스프링: Vol. 1: 스프링의 이해와 원리 스프링의 3대 기반기술 IoC/DI 서비스 추상화 AOP 단위 테스트 고립된 단위 테스트: 고립된 테스트를 하면 테스트가 다른 의존 대상에 영향을 받을 경우를 대비해 복잡하게 준비할 필요가 없을 뿐만 아니라, 테스트 수행 성능도 크게 향상된다 단위 테스트와 통합 테스트 단위 테스트: 목 오브젝트 등의 테스트 대역을 이용해 의존 오브젝트나 외부의 리소스를 사용하지 않도록 고립시켜서 수행하는 테스트 통합 테스트: 두 개 이상의, 성격이나 계층이 다른 오브젝트가 연동하도록 만들어 테스트하거나, 외부의 DB나 파일, 서비스 등의 리소스가 참여하는 테스트 테스트 작성 툴 목 프레임워크: Mockito와 같은 목 오브젝트 지원 프레임워크 등을 이용하여 목 오브젝트..

[토비의 스프링] 5장: 서비스 추상화

토비의 스프링: Vol. 1: 스프링의 이해와 원리 객체지향 객체지향적인 코드는 다른 오브젝트의 데이터를 가져와서 작업하는 대신 데이터를 갖고 있는 다른 오브젝트에게 작업을 해달라고 요청함 오브젝트에게 데이터를 요구하지 말고 작업을 요청하는 것 → 객체지향 프로그래밍의 가장 기본이 되는 원리 서비스 추상화 서비스 추상화: 로우레벨의 기술과 API의 변화에 상관없이 일관된 API를 가진 추상화 계층을 도입하는 추상화 개념 트랜잭션 서비스 트랜잭션 롤백(transaction rollback): 트랜잭션 안에서 문제가 발생해서 트랜잭션 안에서 이미 진행한 SQL 작업들을 모두 취소(무효화)하는 작업 트랜잭션 커밋(transaction commit): 트랜잭션 안의 모든 SQL 작업이 성공적으로 수행된 경우 D..

[토비의 스프링] 3장: 템플릿

토비의 스프링: Vol. 1: 스프링의 이해와 원리 템플릿 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가지는 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 방법 전략 패턴의 적용 오브젝트를 둘로 분리하고 클래스 레벨에서는 인터페이스를 통해서만 의존하도록 만들기 전략 패턴의 실제적인 사용 방법: Client가 구체적인 전략의 하나를 선택하고 오브젝트로 만들어서 Context에 전달, Context는 전달받은 그 Strategy 구현 클래스의 오브젝트 사용 DI는 이러한 전략 패턴의 장점을 일반적으로 활용할 수 있도록 만든 구조 밀접한 관계를 가지는 클래스를 DI 하는 2가지 방법 스프링의 DI를 이용하기 위해 빈으로 등록 코드를 이용해 수동..

[토비의 스프링] 2장: 테스트

토비의 스프링: Vol. 1: 스프링의 이해와 원리 스프링이 개발자에게 제공하는 가장 중요한 가치: 객체지향과 테스트 테스트, 단위 테스트 단위 테스트: 작은 단위의 코드에 대해 테스트를 수행하는 테스트 어노테이션 @Test : Junit에게 테스트용 메소드임을 알려줌 단위 테스트는 항상 일관성 있는 결과가 보장되어야 함 (외부 환경에 영향을 받지 않고, 테스트를 실행하는 순서를 바뀌도 동일한 결과가 보장되어야 함) 테스트 주도 개발(TDD, Test Driven Development): 만들고자 하는 기능의 내용을 담고 있으면서 만들어진 코드를 검증도 해줄 수 있도록 테스트 코드를 먼저 만들고, 테스트를 성공하게 해주는 코드를 작성하는 방식의 개발 방법 JUnit에서는 각 테스트 메소드를 실행할 때마다..

[토비의 스프링] 1장: 오브젝트와 의존관계

토비의 스프링: Vol. 1: 스프링의 이해와 원리 스프링의 핵심 철학 자바 엔터프라이즈 기술의 혼란 속에서 잃어버렸던 객체지향 기술의 진정한 가치를 회복시키고, 그로부터 객체지향 프로그래밍(Object Oriented Programming)이 제공하는 폭넓은 혜택을 누릴 수 있도록 기본으로 돌아가자는 것이 스프링의 핵심 철학 스프링의 관심사 오브젝트(Object) → 객체지향 설계, 디자인 패턴, 리팩토링, 단위 테스트와 같은 오브젝트 설계와 구현에 관한 기술과 지식이 요구됨 자바빈(JavaBean): 디폴드 생성자 (파라미터가 없는 생성자)와 프로퍼티 (set, get을 가진 오브젝트가 노출하는 속성)를 가진 오브젝트 리팩토링(Refactoring): 기존의 코드를 외부의 동작방식에는 변화 없이 내부..