김영한님의 스프링 핵심 원리 - 기본편 강의를 듣고 정리한 내용입니다.
참고❗️ 의존관계 자동 주입은 아무데나 @Autowired
붙인다고 다 되는게 아니라 스프링 빈이어야 동작한다.
@Autowired
를 생략해도 된다. 두개 이상이면 생략 불가.@Component
public class MemberServiceImpl implements MemberService {
private final MemberRepository memberRepository;
@Autowired // 생략 가능
public MemberServiceImpl(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
@Autowired
를 꼭 써주어야 한다.@Autowired(required = false)
를 붙여줘야 한다.@Component
public class MemberServiceImpl implements MemberService {
private MemberRepository memberRepository;
@Autowired(required = false)
public void setMemberRepository(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}
@Autowired
를 붙여서 바로 주입하는 방식NullPointerException
이 난다. 이걸 해결하려면 결국 setter를 만들어줘야 한다.@Component
public class MemberServiceImpl implements MemberService {
@Autowired private MemberRepository memberRepository;
}
@Autowired
붙여서 의존관계 주입을 할 수 있다. @Component
public class MemberServiceImpl implements MemberService {
private MemberRepository memberRepository;
@Autowired
public void init(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
}