이번시간에는 자바코드로 직접 스프링 빈을 등록하는 방법에 대해 알아보았다!
package hello.hellospring;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService(){
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
SpringConfig클래스를 생성하고
@Configuration애너테이션을 주고
MemberService, MemberRepository를 @Bean애너테이션을 주게되면
등록이 된다! MemberService는 MemberRepository를 생성자로 받아서 생성하고
MemberRepository는 인터페이스이기때문에 MemoryMemberRepository구현체를
new로 생성 후 반환해준다!
컨트롤러는 어쨋든 스프링이 어차피 관리하는 것이기때문에 따로 수정이 필요없다!
이것이 두번째 자바코드로 직접 스프링 빈 등록하는 방법이다.
참고: 자바코드로 설정하지 않고 과거에는 XML이라는 문서로 설정을 하였다.
지금은 거의 사용하지 않고 자바코드로 설정을한다.
DI에는 생성자 주입, 필드 주입, setter주입 3가지 방법이있다.
필드 주입은 나중에 변경을 할 수 없게되고
setter주입은 public하게 노출이 되게 된다.
실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다.
그리고 정형화 되지않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록한다.
(현재 DB가 정해지지 않은 가상의 시나리오가 있기때문에 스프링 빈으로 등록하는 방법을 사용한다)
'웹프로그래밍 > Spring 입문' 카테고리의 다른 글
| 13. 회원 웹 기능 - 등록 (0) | 2021.06.23 |
|---|---|
| 12. 회원 웹기능 - 홈 화면 추가 (0) | 2021.06.23 |
| 10. 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2021.06.22 |
| 9. 회원 서비스 테스트 (0) | 2021.06.21 |
| 8. 회원 서비스 개발 (0) | 2021.06.19 |