본문 바로가기

카테고리 없음

[spring] 의존성 주입 (스프링 핵심 원리-기본편 from 김영한 강사님)

System.out.println("이 게시물은 김영한님의 스프링 핵심 원리-기본편을 참조하였습니다.");

 

Dependancy Injection(의존성 주입)

    : 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉.

      클라이언트가 어떤 서비스를 사용할지 지정해주기 보다 무슨 서비스를 사용할 것인지 말해주기.

    - 의도

        객체의 생성과 사용의 관심을 분리

    - 키워드

        @Autowired

    - 사용성

        레고블럭처럼 모듈들을 변경하며 사용할 수 있다.

    - 장점

        - 유연한 구성 가능성, 재사용성, 테스트가능성, 유가능성

    - 종류 

        - 생성자 주입, 수정자 주입, 필드 주입, 일반 메서드 주입

 

 


생성자 주입

 

- 사용방법

    생성자에 @Autowired 붙여줌

- 사용성

    - 생성자 호출 시점에 오직 1번만 수행됨.

    - 불변의 의존관계의 경우 추천됨.

    - 대부분의 경우 추천됨.

//    @Autowired    생성자 하나뿐이면 @Autowired 생략 가능
@Autowired
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
    this.memberRepository = memberRepository;
    this.discountPolicy = discountPolicy;
}

수정자 주입

 

- 사용방법

    setter에 @Autowired 붙여줌

- 사용성

    - 변경 가능성이 있는 의존 관계에 사용됨

private MemberRepository memberRepository;
private DiscountPolicy discountPolicy;

@Autowired
public void setDiscountPolicy(DiscountPolicy discountPolicy) {
    this.discountPolicy = discountPolicy;
}
@Autowired
public void setMemberRepository(MemberRepository memberRepository) {
    this.memberRepository = memberRepository;
}

필드 주입

 

- 사용성

    - 코드가 간결하지만, 테스트가 힘들다.

    - 테스트 코드용으로 간결하게 작성할때만 사용하길 추천.

 

    @Autowired private MemberRepository memberRepository;
    @Autowired private DiscountPolicy discountPolicy;

 

 

 

출처

https://www.inflearn.com/course/lecture?courseSlug=%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8&unitId=55337&tab=curriculum

 

출처

의존성 주입 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

의존성 주입 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 소프트웨어 엔지니어링에서 의존성 주입(dependency injection)은 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다. "의존성"은 예를 들어 서비스로 사용할

ko.wikipedia.org