토비의 스프링 1
1장 - 초난감 DAO
1.1 ~ 1.5
DAO 예제를 차차 리팩토링 해나가는 과정이다.
SOLID 원칙, 디자인패턴, 인터페이스, IoC
- 메서드로 DB Connection 에 대한 관심사의 분리
- 팩토리 메서드 적용
- 인터페이스 도입
- 스프링 적용
1.6 싱글톤
- Application Context 는 싱글톤을 저장하고 관리하는 싱글톤 레지스트리 이기도 하다.
- 스프링은 빈 오브젝트를 기본값으로 모두 싱글톤으로 생성 (디자인패턴의 싱글톤 패턴과는 구현방법이 다름)
- 스프링은 엔터프라이즈 서버환경에서 주로 사용
- 클라이언트 요청이 올때마다 각각의 오브젝트를 새로 생성하는건 매우 비효율적
- 싱글톤 패턴의 한계
- private 생성자로 인한 상속 불가능
- 테스트 하기 어려움
- 멀티 JVM 환경에서 유일한 인스턴스가 보장되지 않음
- 싱글톤 레지스트리
- 생명주기, 관계설정, 사용등의 제어권을 컨테이너에게 넘김
- 덕분에 public 생성자를 가질 수 있음
1.7 DI
- 의존관계 주입
- 코드엔 런타임 시점의 의존관계가 드러나지 않는다. 이러기 위해선 인터페이스에만 의존해야한다.
- 런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제 3의 존재가 결정한다.
- 의존관계는 사용할 오브젝트의 레퍼런스를 외부에서 제공해 줌으로써 만들어진다.
- 즉, 런타임 시에 의존관계를 맺을 오브젝트를 주입해 준다.
- 장점
- 코드에 런타임 클래스에 대한 의존관계가 나타나지 않는다.
- 인터페이스를 통해 결합도가 낮은 코드를 만든다.
- 인터페이스만 의존한다는건 인터페이스를 구현하기만 하면 어떤 오브젝트던지 사용가능하다
- 의존관계에 있는 대상이 바뀌거나 변경되도 영향을 받지 않는다.
- 변경을 통한 확장에 열려있다.
1.8 XML
자바코드 대신 단순한 텍스트 파일인 XML로 DI 를 설정할 수 있다.
컴파일같은 빌드작업 필요없이 빠르게 변경사항을 반영할 수 있다.
- @Configuration ->
<beans> - @Bean ->
<bean>
2장 - 테스트
책에선 스프링이 제공하는 가장 중요한 가치는 객체지향과 테스트 라고 설명한다.
또한 단위테스트의 중요성을 강조한다.
- 테스트하기 좋은 코드가 좋은 코드다.
- 코드작성과 테스트 수행의 간격이 짧을수록 효과적이다.
- 새로운 기술에 대한 테스트 작성은 말그대로 학습효과가 있는 학습테스트이다.
- 오류가 발생할 경우 그에대한 버그테스트를 만들어두면 유용하다.
댓글남기기