자바 코드로 직접 스프링 빈 등록하기

Sunny·2023년 2월 9일
0

🌱 자바 코드로 직접 스프링 빈 등록하기

'컴포넌트 스캔과 자동 의존관계 설정'에서 설정해주었던 회원 서비스와 회원 리포지토리의 @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가지 방법

  1. 생성자 주입
    우리가 계속 실습해왔던 방법이다.
    예시는 다음과 같다.

    @Controller
    public class MemberController {
        private final MemberService memberService;
    
        @Autowired
        public MemberController(MemberService memberService) {
            this.memberService = memberService;
        }
    }
  2. 필드 주입
    예시는 다음과 같다.

    @Autowired private MemberService memberService;
  3. Setter 주입
    예시는 다음과 같다.

      @Controller
      public class MemberController {
          private final MemberService memberService;
    
          @Autowired
          public void setMemberService(MemberService memberService) {
              this.memberService = memberService;
          }
      }
profile
개발에 재미를 붙여보기 :)

0개의 댓글