스프링 입문-12. 자바 코드로 직접 스프링 빈 등록하기

Sukhun-Net·2023년 5월 28일

@Configuration
public class SpringConfig {

    @Bean // Spring bean을 등록할 거라는 의미로 이해하면 됨 
    public MemberService memberService() // 이 memberService를 아래의 로직 호출하여 spring bean에 등록해줌{
        return new MemberService(memberRepository()); // spring bean에 등록된 memberRepository를 넣어준다.  

    }
    
    @Bean 
    public MemberRepository memberRepository() {
    	return new MemoryMemberRepository(); // 인터페이스에서는 new가 안되어, 구현체(MemoryMemberRepository()) 사용 
}

컨트롤러는 어차피 스프링이 관리하는 것이기 때문에 위와 같은 코드 대신 컴포넌트 스캔 방식 이용
(고정적) (Annotation으로 @Controller와 @Autowired 사용)


@Controller
public class MemberController {
    private final MemberService memberService;

    @Autowired
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }

참고: DI에는 필드 주입, setter 주입, 생성자 주입 이렇게 3가지 방법이 있다.

필드 주입 (수정등에 대해 유연하지 않아 선호 x )
@Autowired final MemberService memberService;

생성자 주입 : (우리가 한 것)

profile
Data Scientist (Computer Vision, Multimodal)

0개의 댓글