1. 컴포넌트 스캔과 자동 의존 관계 설정
  2. 자바 코드로 직접 스프링 빈 등록하기

컴포넌트 스캔과 자동 의존 관계 설정

회원 컨트롤러가 회원 서비스와 회원 리포지토리를 사용할 수 있게 의존 관계 (멤버 컨트롤러가 멤버 서비스를 통해서 회원 가입, 데이터 조회 등을 할 수 있게 함)를 준비.

회원 컨트롤러에 의존 관계 추가

package hello.hellospring.controller;

import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

/* @Controller
public class MemberController {
// 기능은 없지만, 스프링 컨테이너라는 스프링 통에 MemberController 객체를 생성해서 스프링에 넣어두고 관리 (스프링 빈이 관리된다.)
} */

@Controller
public class MemberController {

    //   멤버서비스를 가져다 쓰기 위해서 new로 가져옴
    //   private final MemberService memberService = new MemberService();

    //   하지만, 스프링이 관리하게 되면 모두 스프링 컨테이너에 등록하고 스프링 컨테이너를 통해서 사용하게 해야 한다.
    //   해결 방안
    private final MemberService memberService;

    @Autowired //   memberService를 스프링이 스프링 컨테이너에 있는 memberService를 가져다 연결 해준다.(Dependency Injection)
    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }

    // 오류발생 : 'hello.hellospring.service.MemberService' that could not be found.
    // 해결 : MemberSerivce가 순수한 자바 코드 여서 생긴 문제 => MemberService에 @Service 달아 주기, MemoryMemberRepository에 @Repository 달아 주기

}

오류발생

Consider defining a bean of type 'hello.hellospring.service.MemberService' in 
your configuration

memberService가 스프링 빈으로 등록 되어 있지 않음.

Untitled

참고 : helloController는 스프링이 제공하는 컨트롤러여서 스프링 빈으로 자동 등록 된다. @Controller 가 있으면 자동 등록

스프링 빈을 등록하는 2가지 방법