학습 목표
학습 결과 요약
- 스프링 프레임워크는 스프링 프레임워크 - 객체 지향의 특성과 설계 원칙을 극한까지 적용한 OOP 프레임워크다. 즉 자바의 객체지향 특성, 원칙, 디자인패턴을 알지 못하면 깊이 이해할 수 없다.
학습 내용
객체지향 4개 특징 - 도구
객체지향 원칙 SOLID - 도구 사용 방법
디자인 패턴 - 레시피 / 객체 지향 특성과 설계 원칙을 기반으로 구현돼 있다.
스프링 프레임워크 - 객체 지향의 특성과 설계 원칙을 극한까지 적용한 OOP 프레임워크
디자인 패턴
어댑터 패턴
- Adapter 란 변환기를 뜻한다.
- 어댑터는 하나의 인터페이스를 다른 인터페이스로 변환하는 역할
프록시 패턴
- 프록시는 대리자, 대변인을 뜻한다.
- 누군가를 대신해 그 역할을 수행하는 존재를 말한다.
- 클라이언트 쪽에서는 실제 객체를 호출한건 지, 대리자 객체를 통해 호출한 건지 전혀 모르게 처리할 수 있다.
- 프록시 패턴의 목적은 제어의 흐름을 변경하거나 다른 로직을 수행하기 위해 사용한다.
데코레이터 패턴
- 데코레이터는 도장/도배업자를 의미한다.
- 데코레이터 패턴은 원본에 장식을 더하는 패턴이다.
- 프록시 패턴과 구현 방법이 같지만 차이점은 클라이언트가 받는 반환값에 장식을 덧 입힌다.
싱글톤 패턴
- 인스턴스를 하나만 만들어 사용하기 위한 패턴이다.
- 커넥션 풀, 스레드 풀 등과 같은 경우 인스턴스를 여러개 만들게 되면 불필요한 자원을 사원하게 되는데 싱글턴 패턴을 사용하면 오직 하나의 인스턴스만 만들고 재사용 가능하다.
- 싱글톤 객체는 공유 객체로 사용되기 때문에 속성을 갖지 않게 해야 한다.
다만, 읽기 전용 속성을 갖는 것은 문제가 되지 않는다.
템플릿 메서드 패턴
- 상위 클래스에 공통 로직을 수행하는 템플릿 메서드와 하위 클래스에 오버라이딩을 강제하는 추상 메서드 또는 선택적으로 오버라이딩할 수 있는 훅 메서드를 두는 패턴을 템플릿 메서드 패턴이라고 한다.
팩터리 메서드 패턴
- 팩터리 메서드는 객체를 생성 반환하는 메서드를 말한다.
- 패턴이 붙으면 하위 클래스에서 팩터리 메서드를 오버라이딩해서 객체를 반환하게 하는 것을 의미한다.
전략 패턴
- 구성 요소
- 전략 메서드를 가진 전략 객체
- 전략 객체를 사용하는 컨텍스트
- 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트
- 전략을 다양하게 변경하면서 컨텍스트를 실행할 수 있다.
- 전략을 익명 내부 클래스로 구현한 전략 패턴
템플릿 콜백 패턴 & 리팩토링된 템플릿 콜백 패턴
- 전략 패턴의 변형으로 DI 에서 사용하는 특별한 형태의 전략이다.
- 전략 패턴과 모든 것이 동일한데 전략을 익명 내부 클래스로 정의해서 사용한다
스프링을 이해하고 활용하기 위해선 전략 패턴, 템플릿 콜백 패턴, 리팩터링된 템플릿 콜백 패턴을 잘 기억해야 한다.
스프링 프레임워크
- 스프링을 이해하려면 POJO 를 기반으로 IcC/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대한 이해가 필수다.
의존성이란 ?
- 자바에서 의존성이란 전체가 부분에 의존한다고 표현할 수 있다. -> new 로 표현된다.
- 의존성 주입 방법
1. 생성자
2. 속성
3. XML 파일
4. XML 파일에서 속성 주입
- @Autowired, @Resource
AOP
- DI가 의존성에 대한 주입이라면 AOP는 로직의 주입이라고 할 수 있다.
PSA - 일관성 있는 서비스 추상화
- 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의 인터페이스로 제어할 수 있게 한 것을 서비스 추상화라 한다.