TIL)23.07.18(Spring 기본2)

주민·2023년 7월 18일
0

TIL

목록 보기
41/84

단일 책임 원칙!

객체 지향에서 볼 수 있는 원칙 중 하나로 한 객체는 하나의 역할과 책임 을 가진다.

위 원칙을 Spring의 3계층 파일로 확인해보면 아래와 같다.
- controller : 요청 & 응답
- service : 요구사항을 처리하는 실세
- repository : DB 관리
=> 여러 역할을 한번에 처리해도 실행에는 문제없으나 코드를 읽기 힘들고 유지보수가 힘들어진다.

Ioc & DI

=> 제어의 역전 & 의존성 주입

  • Ioc(Inversion of Control)
    => 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 기져와 사용하는 것

  • DI(Dependency Injection)
    => 제어의 역전을 구현하기 위해 사용하는 방법
    => 어떤 클래스가 다른 클래스에 의존

  • Spring 예제

# Controller

* 생성자 주입으로 의존성 주입
private final MemoService memoService;

*Controller 에서 사용할 수 있도록 주입해주는 과정
public MemoController(MemoService memoService){
    this.memoService = memoService;
}

# 타 클래스
MemoController sample = new MemoController(new MemoService());

주입 방법

  • 필드에 직접 주입
    => Consumer class 안에 있는 필드(food)에 다른 class를 인스턴스하여 가져옴
** Chicken 과 pizza 는 Food를 implements 받음

Food food;

Consumer consumer = new Consumer();
consumer.food = new Chicken(); or new Pizza();
consumer.eat();
  • 메서드를 통한 주입
    => setFood 메서드에 값을 주입받음
public void setFood(Food food) {
	this.food = food;
}

Consumer consumer = new Consumer();
consumer.setFood(new Chicken());
consumer.eat();
  • 생성자를 통한 주입
    => 생성자를 만들어 처음 인스턴스화 할 때 Food 의 값을 저장함
public Consumer(Food food) {
	this.food = food;
}

Consumer consumer = new Consumer(new Chicken());
consumer.eat();

consumer = new Consumer(new Pizza());
consumer.eat();

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

좋은 글 감사합니다!

답글 달기

관련 채용 정보