본문 바로가기

개발독서

(5)
[토비의 스프링3] 1. 오브젝트와 의존관계(1) - DAO 분리 스프링이 관심 갖는 대상인 오브젝트의 설계와 구현, 동작원리에 집중하여 아래 예제를 통해 스프링이 무엇인지 이해해보자. 1. 간단한 DAO로 문제점을 파악해보자 ❓ DAO (Data Access Object) DB를 사용해 데이터를 조회, 조작하는 기능을 전담하도록 만든 오브젝트. 사용자 정보를 Jdbc API를 통해 DB에 저장하고 조회할 수 있는 간단한 DAO를 만들어보자. 1-1. User Class 생성 public class User { String id; String name; String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName..
[토비의 스프링3] 8-4. 스프링의 기술(2) - AOP, PSA '토비의 스프링3' 개발 서적을 읽으며 내용을 정리한 글입니다. 애스펙트 지향 프로그래밍(AOP) IoC/DI를 이용해서 POJO에 선언적인 엔터프라이즈 서비스를 제공할 수 있지만 일부 서비스는 순수한 객체지향 기법만으로 POJO 조건을 유지한 채 적용하기 힘들다. 이런 문제를 해결하기 위해 나온게 AOP 이다. AOP 적용 기법 다이내믹 프록시를 사용하는 방법 - 기존 코드에 영향을 주지 않고 부가 기능을 적용해주는 데코레이터 패턴을 응용한 것이다. - 부가기능을 부여할 수 있는 곳은 메소드의 호출이 일어나는 지점뿐이라는 제약이 있다. AspectJ를 이용한 언어의 확장 - 유명 오픈소스 AOP 툴이다. - 프록시 방식에서 불가능한 다양한 조인 포인트를 제공한다. - Java, JDK의 지원만으로 불가..
[토비의 스프링3] 8-4. 스프링의 기술(1) - IoC/DI '토비의 스프링3' 개발 서적을 읽으며 내용을 정리한 글입니다. 8.4 스프링의 기술 스프링에는 POJO 프로그래밍을 쉽게 할 수 있도록 3 가지 가능기술을 지원한다. : IoC/DI, AOP, PSA 스프링은 단지 이런 기술을 제공하는 기술 프레임워크가 아니다. 스프링의 진정한 목표는 POJO 기반의 엔터프라이즈 개발을 편리하게 해주는 것이다. 따라서 스프링이 직접 제공하지 않는 기술에 대해서도 가능기술을 적용하여 개발하는 것이 목적과 핵심 가치에 부합한다. 제어의 역전(IoC) / 의존관계 주입(DI) IoC/DI는 스프링의 가장 기본이 되는 기술이자 핵심 개발 원칙이다. 왜 이 원칙이 필요한지 알아보자. 왜 두 개의 오브젝트를 분리해서 만들고, 인터페이스를 느슨하게 연결한 뒤, 실제 사용할 대상은 ..
[토비의 스프링3] 8-3. POJO 프로그래밍 '토비의 스프링3' 개발 서적을 읽으며 내용을 정리한 글입니다. 8.3 POJO 프로그래밍 스프링의 가장 강력한 특징과 목표를 기술적으로 정의하자면 아래와 같다. 분리됐지만 반드시 필요한 엔터프라이즈 서비스 기술을 POJO 방식으로 개발된 애플리케이션 핵심 로직을 담은 코드에 제공한다. 해석 (1) : 핵심 로직은 아니지만 반드시 필요한 뒷단의 기술을 (2) : POJO 방식으로 개발된 애플리케이션 핵심 로직에 포함시킨다. 핵심 로직과 뒷단의 기술을 분리하였는데 (2)에 포함시켜 제공하고자 하는게 스프링이 기술적으로 지향하는 목적이라고 한다. 그렇다면 POJO가 대체 뭘까? POJO에 대해서 알아보자. POJO란 무엇일까? POJO 정의 간단한 자바 오브젝트. 객체지향적인 원리에 충실하면서, 환경과 기술..
[토비의 스프링3] 8.1~2 스프링의 정의, 목적 '토비의 스프링3' 개발 서적을 읽으며 내용을 정리한 글입니다. 8.1 스프링의 정의 스프링을 한 줄로 정의를 내린다면 아래와 같다고 할 수 있다. 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 풀이 애플리케이션 프레임워크 엔터프라이즈 전 계층과 전 영역에 전략과 기능을 제공해줌으로써 애플리케이션을 편리하게 개발하게 해주는 애플리케이션 프레임워크로 사용된다. (단지 JDBC/ORM 지원 or IoC/DI 프레임워크 or AOP툴이라고만 본다면 일부만 본 것이다.) 경량급 개발환경과 서버가 불필요하게 복잡하거나 무겁지 않다. 비교 : EJB기술은 느리고 무거운 자바(WAS)서버가 필요했다. 제대로 된 개발환경(패키징,서버 배치) 갖추지 않고는 개발이 어려웠다. 만들어진 코드..