스프링 | 의존성 주입

Salt·2023년 5월 27일

의존성 주입 방법 3가지

@Autowired ; 컨테이너에 든 자료 중 Chef에 대입할 수 있는 걸 ‘전부’ 집어넣어라.

@Component ; 스프링 컨테이너(힙)에 자동으로 넣음

@Qualifier ; 여러 개의 빈이 등록되었을 때, 어떤 빈을 선택할 지 정함

  1. 필드 주입 : 객체의 필드(멤버변수) 위에 어노테이션 ,테스트 코드에서만 써야 함.
**@Component**("fs")
public class FusionRestaurant implements Restaurant {
    **@Autowired**
    private Chef chef;
    **@Autowired**
    private Course course;
  1. 세터 주입 : 객체의 세터 메서드 위에 어노테이션 ,변경 사항이 있을 때 사용한다.

    세터에서 @Qualifier 를 사용하는 경우, 디폴트 생성자가 오버로딩 되어있어야 한다.

@Autowired
    public void setChef(@Qualifier("jc") Chef chef) {
        this.chef = chef;
    }
    @Autowired
    public void setCourse(@Qualifier("jco") Course course) {
        this.course = course;
    }
  1. 생성자 주입 : 생성자 위에 어노테이션 , 주로 많이 씀

    ‘객체 생성 시점’에 주입하여 NullPointerException 문제가 발생할 확률이 적고 안전하다.

    중간에 바꿔야 할 게 없을 때 사용한다.

@Autowired
    public Hotel(Restaurant restaurant,Chef chef) {
        this.restaurant = restaurant;
        this.chef = chef;
    }

그래서 이거 왜 쓰는가???

소스코드를 짠 후, ‘빌드’라는 과정을 거쳐 배포할 수 있는 형태로 배포파일을 만든다. (코드는 숨김)

예를 들어, 쇼핑몰을 만들었을 때, DB 연결은 알아서 하라고 하는 형식의 서비스가 있다. (원래 MySql 연동됨)

그런데, 클라이언트가 오라클을 쓴다고 해서 코드에 오라클 적합 코드로 고친 다음 재빌드 해야 한다.

→ 다른 자료형이 와도 바로 고칠 수 있도록 범용성 좋게 만들자

0개의 댓글