스프링 핵심 원리 1장

wook2·2021년 10월 11일
0

spring

목록 보기
1/8
post-thumbnail

스프링의 핵심

  • 스프링은 자바 기반의 프레임워크이다.
  • 자바언어의 가장 큰 특징인 OOP를 살려 스프링은 좋은 객체지향 프로그래밍을 설계할 수 있게 해준다.

좋은 객체 지향 설계의 5가지 원칙(SOLID)

  • SRP: 단일 책임 원칙(single responsibility principle)
  • OCP: 개방-폐쇄 원칙 (Open/closed principle)
  • LSP: 리스코프 치환 원칙 (Liskov substitution principle)
  • ISP: 인터페이스 분리 원칙 (Interface segregation principle)
  • DIP: 의존관계 역전 원칙 (Dependency inversion principle)

1. 단일 책임 원칙

  • 하나의 클래스는 하나의 책임만을 가져야 한다.
    하나의 책임이라는 것이 애매모호한데, 변경을 기준으로 삼아야 한다.
    변경이 있을때 파급효과가 적다면 SRP를 잘 지킨것이다.

2. 개방 폐쇠 원칙

  • 소프트웨어 요소는 확장에는 열려있으나, 변경에는 닫혀 있어야 한다.
    다형성을 사용하여 설계를 하였을때 만약 클라이언트 코드가 직접 구현객체를 선택한다면, 그것은 OCP에 위반되는 코드라고 볼 수 있다.
    OCP를 지키기 위해서는 별도의 설정자가 구현객체를 넣어주는 DI를 이용하여야 한다.

3. 리스코프 치환 원칙

  • 다형성에서 하위 클래스는 인터페이스의 규약을 반드시 정확히 지켜야한다. 인터페이스를 구현한 구현체를 믿고 사용하기 위해서는 이 원칙을 지켜야 한다.

4. 인터페이스 분리 원칙

  • 특정 클라이언트를 위한 인터페이스는 여러 개가 범용 인터페이스보다 낫다. 인터페이스가 더 명확해지고 대체가능성이 높아진다.

5. 의존관계 역전 원칙

  • 프로그램은 추상화에 의존해야하며 구체화에 의존하면 안된다. 구현 객체는 언제든 변할 수 있다는 생각을 가지고 인터페이스에 의존하여 인터페이스에 따라 성실히 구현된 객체를 사용하여야 한다.

스프링 프레임워크가 없이 자바코드로만 작성한다면..

위의 코드와 같이 AppConfig라는 클래스를 생성하여 일종의 DI컨테이너 역할을 해주는 클래스를 만들었다. 이 AppConfig를 통해 객체는 구현 객체를 생성자를 통해 주입받고, 이 방식을 Dependency Injection이라고 부른다.

스프링 프레임워크를 이용한다면

위와 같이 사용자가 직접 설정파일을 만들고 하나하나 이어붙이는 작업을 프레임워크에게 맡길 수 있다. 직접 DI 컨테이너를 생성하지 않아도 스프링에 의존하여 OCP와 DIP를 모두 만족하는 프로그램을 구현할 수 있다.

profile
꾸준히 공부하자

0개의 댓글