🌱 자바 코드로 직접 스프링 빈 등록하기
'컴포넌트 스캔과 자동 의존관계 설정'에서 설정해주었던 회원 서비스와 회원 리포지토리의 @Service, @Repository, @Autowired 애노테이션을 제거하고 진행한다.
Controller는 그대로 둔다!
자바 코드로 직접 스프링 빈을 등록하기 위하여 먼저 SpringConfig 클래스 파일을 생성한다.
@Configuration
public class SpringConfig {
@Bean // 스프링 빈으로 등록할 것이라는 의미
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
다음과 같이 코드를 작성하면 스프링이 돌아갈 때 @Configuration을 읽고 @Bean을 읽는다.
그러면 정상적으로 자바 코드가 돌아가는 것을 확인해볼 수 있다.
🌱 DI(Dependency Injection)의 3가지 방법
생성자 주입
우리가 계속 실습해왔던 방법이다.
예시는 다음과 같다.
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
}
필드 주입
예시는 다음과 같다.
@Autowired private MemberService memberService;
Setter 주입
예시는 다음과 같다.
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public void setMemberService(MemberService memberService) {
this.memberService = memberService;
}
}