작성
·
487
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
수정자 주입 설명하시는 강의 내용 중
9:55 부분부터 setter에 있는 @Autowired 2개를 지우고 실행했더니 아무 것도 출력이 안 되었는데, 생성자 부분에서 soutv를 다시 추가하고 실행해 보니 생성자 주입은 정상적으로 되는 것 같더라고요.
그런데 setter에 @Autowired를 붙이고,
soutv는 setter와 생성자 모두에 넣고 AutoAppConfigTest를 실행하면
setter의 soutv와 생성자의 soutv 모두 실행되고 다음과 같이 출력됩니다.
memberRepository = hello.core.member.MemoryMemberRepository@4e70a728
discountPolicy = hello.core.discount.RateDiscountPolicy@b7838a9
memberRepository = hello.core.member.MemoryMemberRepository@4e70a728
discountPolicy = hello.core.discount.RateDiscountPolicy@b7838a9
그럼 setter 주입도 되고, 생성자 주입도 된 건가요? 불필요하게 또 주입을 하게 되었다는 뜻인가요?
@Component
public class OrderServiceImpl implements OrderService {
private MemberRepository memberRepository;
private DiscountPolicy discountPolicy;
@Autowired
public void setMemberRepository(MemberRepository memberRepository) {
System.out.println("memberRepository = " + memberRepository);
this.memberRepository = memberRepository;
}
@Autowired
public void setDiscountPolicy(DiscountPolicy discountPolicy) {
System.out.println("discountPolicy = " + discountPolicy);
this.discountPolicy = discountPolicy;
}
@Autowired
public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
System.out.println("memberRepository = " + memberRepository);
System.out.println("discountPolicy = " + discountPolicy);
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
감사합니다