일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- JPA
- 소수찾기
- c#
- popleft
- 브루투포스
- DP
- 1일1솔
- LCM
- 프로그래머스
- 인프런
- 완전탐색
- spring
- Python
- Java
- 파이썬
- 소수판별
- 합 구하기
- python3
- 연관관계
- BFS
- 그리디 알고리즘
- 백준
- appendleft
- pypy3
- deque
- C#강의
- mvc
- 누적합
- 우선순위큐
- unity
Archives
- Today
- Total
jae_coding
[Spring core] 의존관계 주입 본문
반응형
본 리뷰는 인프런 김영한씨의 스프링 핵심원리 - 기본편 리뷰를 한 포스팅입니다.
목차
- 생성자 주입
- 수정자 주입
- 필드 주입
- 일반 메서드 주입
1. 생성자 주입
-. 생성자를 통해서 의존 관계 주입을 받는 방식이다.
-. 특징
1. 생성자 호출 시점에 딱 1번만 보장된다.
2. 불변, 필수 의존관계에 사용된다.
3. 스프링에서는 생성자가 1개만 있다면 @Autowired를 자동으로 주입시켜준다. (스프링 빈에만 해당)
@Component
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy
discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
}
2. 수정자 주입 (Setter 주입)
-. Setter가 필드의 값을 변경하는 수정자 메서드를 통해서 의존 관계를 주입하는 방법이다.
-. 특징: 선택, 변경 가능성이 있는 의존관계에 사용된다.
@Autowired
public void setMemberRepository(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Autowired
public void setDiscountPolicy(DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}
3. 필드 주입
-. 필드에 바로 주입하는 방법
-. 특징
1. 외부에서 변경이 불가능해서 테스트가 하기 힘들다.
2. DI 프레임워크가 없으면 할 수 있는 것이 없다.
3. @Configuraion 같은 곳에서만 특별 용도로만 사용된다.
4. 웬만하면 사용하지 말자!
@Autowired
private MemberRepository memberRepository;
@Autowired
private DiscountPolicy discountPolicy;
4. 일반 메서드 주입
-. 일반 메서드를 통해서 주입 받을 수 있다.
-. 특징: 메서드 하나를 통해서 여러 필드를 주입 받을 수 있다.
private MemberRepository memberRepository;
private DiscountPolicy discountPolicy;
@Autowired
public void init(MemberRepository memberRepository, DiscountPolicy
discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
반응형
'Spring, java > Spring_core' 카테고리의 다른 글
[Spring core] 스프링 회원정책 프로젝트 (객체 지향 원리 적용) (2) | 2022.08.26 |
---|---|
[Spring core] 스프링 회원정책 프로젝트 (순수 java) (0) | 2022.08.25 |
Comments