일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
Tags
- DP
- 1일1솔
- 소수찾기
- 합 구하기
- c#
- LCM
- 완전탐색
- Python
- 우선순위큐
- deque
- BFS
- JPA
- unity
- python3
- appendleft
- C#강의
- Java
- spring
- mvc
- 소수판별
- popleft
- pypy3
- 연관관계
- 인프런
- 브루투포스
- 프로그래머스
- 파이썬
- 그리디 알고리즘
- 백준
- 누적합
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