반응형
project 안에 Config Class 생성
@Configuration : annotation 기반 환경설정을 돕는 곳
@Bean : Spring bean 등록 annotation
@Configuration
public class SpringConfig {
@Bean
public MemberService MemberService() {
return new MemberService(MemberRepository()); //autowired
};
@Bean
public MemberRepository MemberRepository() {
//MemberRepository 는 Interface이기 때문에 구현체인 MemoryMemberRepository를 return
return new MemoryMemberRepository();
}
}
Controller의 경우 컴포넌트 스캔 방식으로 작성해서 사용
(@Autowired 의 경우, bean으로 등록되지 않은 곳에선 error)
🔔 실무에서는 주로 컴포넌트 스캔을 많이 사용함.
상황에따라 구현클래스를 변경해야 하는 경우 Spring bean으로 등록
* 의존성 주입의 3가지 방법 (Dependency Injection)
1. 생성자 주입 (요즘 가장 많이 사용하고 권장하는 방식)
: 생성자를 통해 의존관계를 주입
생성자 호출시점에 1회 호출
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
2. 필드 주입
: 거의 쓰이지 않음 ( 특히 Intellij 에서 사용시 오류남)
@Autowired MemberService memberService;
3. setter 주입
: setter의 경우 public으로 열어둬야하는데 누군가 접근 할 수 있고, 사실 주입받는 객체가 변경될 가능성 거의 없음
public MemberService setMemberService(MemberService memberService) {
this.memberService = memberService;
}
출처 | 인프런 / 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술(김영한)
반응형