토비의 스프링 정리 프로젝트 #1.9 정리

Jake Seo·2021년 7월 12일
0

토비의 스프링

목록 보기
10/29

정리

  • 초난감 DAO에서 책임이 다른 코드를 분리하여 두 개의 클래스로 만들었다. (관심사의 분리, 리팩토링)
    • DB 커넥션SQL 작업
  • 추후에 변경이 일어날 수 있는 부분은 인터페이스를 만들어 구현하도록 하고, 다른 클래스에서 인터페이스를 통해서만 접근하도록 만들었다. 인터페이스를 정의한 쪽의 구현 방법이 달라져 클래스가 바뀌더라도, 그 기능을 사용하는 클래스의 코드는 같이 수정할 필요가 없게 만들었다. (전략 패턴)
  • UserDao에서는 책임 자체가 변경되는 경우 외에는 불필요한 변화가 발생하지 않도록 막아주고, UserDao가 사용하는 외부 오브젝트의 기능은 자유롭게 확장하거나 변경할 수 있게 만들었다. (개방 폐쇄의 원칙)
  • 한쪽의 기능 변화가 다른쪽의 변경을 요구하지 않아도 되도록 만들고(낮은 결합도), 자신의 책임과 관심사에만 순수하게 집중하는(높은 응집도) 깔끔한 코드를 만들 수 있었다.
  • 오브젝트가 생성되고 타 오브젝트와 관계를 맺는 작업의 제어권을 별도의 오브젝트(Factory)를 만들어 넘겼다. 이후 Factory의 기능을 일반화한 IoC 컨테이너로 넘겨 오브젝트 자신이 사용할 대상의 생성이나 선택에 관한 책임으로부터 자유롭게 만들었다. (제어의 역전/IoC)
  • 전통적 싱글톤 구현 방식의 단점을 개선한, 서버 서비스 오브젝트로서의 장점을 살릴 수 있는 싱글톤 레지스트리 를 이용하여 컨테이너를 활용하는 방법에 대해 알아봤다. (싱글톤 레지스트리)
  • 설계 시점에서는 클레스와 인터페이스 사이의 느슨한 의존 관계만 만들어놓고, 런타임 시에 실제 의존 오브젝트를 제 3자(DI 컨테이너)의 도움을 받아 주입받아서 동적인 의존관계를 갖게 해주는 IoC의 특별한 케이스를 알아봤다.(의존관계 주입/DI)
  • XML을 이용해 DI 설정정보를 만드는 방법과 의존 오브젝트가 아닌 일반 값을 외부에서 설정하여 런타임 시에 주입하는 방법을 알아봤다. (XML 설정)

스프링이란 '어떻게 오브젝트가 설계되고, 만들어지고, 관계를 맺고 사용되는지에 관심을 갖는 프레임워크'이다. 오브젝트 설계, 분리, 개선, 의존관계를 설정하는 책임은 개발자에게 있다. 스프링은 원칙을 잘 따르는 설계를 적용하려고 할 때 번거로운 작업을 편하게 도와주는 도구임을 잊지말자.

객체지향 설계와 프로그래밍에 대한 학습, 훈련, 경험이 뒷받침되어야 스프링을 이용한 깔끔하고 유연한 코드를 만들어낼 수 있다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글