본문 바로가기

SPRING/Spring Boot

스프링 빈과 의존관계 - 자바 코드로 직접 스프링 빈 등록

회원 서비스와 회원 리포지토리의 @Service, @Repository, @Autowired 애노테이션을 제거하고,

SpringConfig를 만들어 직접 스프링 빈을 등록

package hifive.hifivespring;


import hifive.hifivespring.repository.MemberRepository;
import hifive.hifivespring.repository.MemoryMemberRepository;
import hifive.hifivespring.service.MemberService;
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();
    }

}

 

 

 

▶  DI의 3가지 방법

 

  • 필드 주입
  • setter 주입
  • 생성자 주입  

(** 의존관계가 실행중에 동적으로 변하는 경우는 거의 없으므로 생성자 주입을 권장)

-  정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록한다. 

 

 주의: @Autowired 를 통한 DI는 helloConroller , memberService 등과 같이 스프링이 관리하는 객체에서만 동작한다.

             스프링 빈으로 등록하지 않고 내가 직접 생성한 객체에서는 동작하지 않는다.