7. 의존관계 자동 주입

선뀰·2024년 2월 14일
0

Spring

목록 보기
7/9

다양한 의존관계 주입 방법

  • 생성자 주입 (지금까지 했던 방법)
  • 수정자 주입(setter 주입)
  • 필드 주입
  • 일반 메서드 주입

생성자 주입 = 두번 호출이 불가능하다.

생성자를 통해서 의존 관계를 주입 받는 방법이다.
1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용된다. 두번 호출 안되게 할 수 있다.

필수 의존관계만 사용된다.

  • 생성자가 딱 하나 있으면 @Autowired를 생략해도 된다.
    자동으로 의존관계 주입이 일어난다.

수정자 주입(setter 주입)

  1. 스프링 컨테이너 만들기
  2. 스프링 빈을 등록,
  3. Autowired주입한다. 연관관계 있는 것을 등록한다.
    생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동으로 주입이 된다. = 많이 사용되는 방법

선택, 변경 가능성이 있는 의존관계에 사용
Autowired(required = false) : 주입할 대상이 없어도 동작하게 하려면 이렇게 사용한다.
setter라 불리는 필드의 값을 변경

  • 자바빈 프로퍼티 규약 예시
class Data {
	private int age;
    public void setAge(int age) {
    	this.age = age;
    }
    
    public int getAge() {
    	return age;
    }
}

필드 주입

@Autowired private MemberRepository memberRepository;
// 무조건 값이 있어야 한다.
@Autowired private DiscountPolicy discountPolicy;

옵션 처리

주입할 스프링 빈이 없어도 동작해야 할 때가 있다.
디폴트값으로 동작할 때도 있다. required = true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다.

@Autowired(required=true) : 자동 주입 대상이 없으면 수정자 메서드 자체가 호출 안된다.
@Nullable : 자동 주입할 대상이 없으면 null이 입력된다.
Optional<> : 자동 주입할 대상이 없으면 Optional.empty가 입력된다.

profile
공부 기록

0개의 댓글