토비의 스프링 1

1 분 소요




1장 - 초난감 DAO

1.1 ~ 1.5

DAO 예제를 차차 리팩토링 해나가는 과정이다.
SOLID 원칙, 디자인패턴, 인터페이스, IoC

  1. 메서드로 DB Connection 에 대한 관심사의 분리
  2. 팩토리 메서드 적용
  3. 인터페이스 도입
  4. 스프링 적용


1.6 싱글톤

  • Application Context 는 싱글톤을 저장하고 관리하는 싱글톤 레지스트리 이기도 하다.
  • 스프링은 빈 오브젝트를 기본값으로 모두 싱글톤으로 생성 (디자인패턴의 싱글톤 패턴과는 구현방법이 다름)
    • 스프링은 엔터프라이즈 서버환경에서 주로 사용
    • 클라이언트 요청이 올때마다 각각의 오브젝트를 새로 생성하는건 매우 비효율적
  • 싱글톤 패턴의 한계
    • private 생성자로 인한 상속 불가능
    • 테스트 하기 어려움
    • 멀티 JVM 환경에서 유일한 인스턴스가 보장되지 않음
  • 싱글톤 레지스트리
    • 생명주기, 관계설정, 사용등의 제어권을 컨테이너에게 넘김
    • 덕분에 public 생성자를 가질 수 있음


1.7 DI

  • 의존관계 주입
    • 코드엔 런타임 시점의 의존관계가 드러나지 않는다. 이러기 위해선 인터페이스에만 의존해야한다.
    • 런타임 시점의 의존관계는 컨테이너나 팩토리 같은 제 3의 존재가 결정한다.
    • 의존관계는 사용할 오브젝트의 레퍼런스를 외부에서 제공해 줌으로써 만들어진다.
    • 즉, 런타임 시에 의존관계를 맺을 오브젝트를 주입해 준다.
  • 장점
    • 코드에 런타임 클래스에 대한 의존관계가 나타나지 않는다.
    • 인터페이스를 통해 결합도가 낮은 코드를 만든다.
      • 인터페이스만 의존한다는건 인터페이스를 구현하기만 하면 어떤 오브젝트던지 사용가능하다
    • 의존관계에 있는 대상이 바뀌거나 변경되도 영향을 받지 않는다.
    • 변경을 통한 확장에 열려있다.


1.8 XML

자바코드 대신 단순한 텍스트 파일인 XML로 DI 를 설정할 수 있다.
컴파일같은 빌드작업 필요없이 빠르게 변경사항을 반영할 수 있다.

  • @Configuration -> <beans>
  • @Bean -> <bean>


2장 - 테스트

책에선 스프링이 제공하는 가장 중요한 가치는 객체지향과 테스트 라고 설명한다.
또한 단위테스트의 중요성을 강조한다.

  • 테스트하기 좋은 코드가 좋은 코드다.
  • 코드작성과 테스트 수행의 간격이 짧을수록 효과적이다.
  • 새로운 기술에 대한 테스트 작성은 말그대로 학습효과가 있는 학습테스트이다.
  • 오류가 발생할 경우 그에대한 버그테스트를 만들어두면 유용하다.





댓글남기기