과정을 즐기자

스프링 빈과 의존관계 본문

Spring

스프링 빈과 의존관계

320Hwany 2022. 7. 18. 09:51

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

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

 

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

MemberController가 MemberService와 MemberRepository를 사용할 수 있게 의존관계 준비

@Controller
public class MemberController {

    private final MemberService memberService;

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

생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에 찾아서 넣어준다. 이렇게 객체 의존관계를 외부에서 넣어주는 것을 DI(Dependency Injection), 의존성 주입이라 한다.

@Service
public class MemberService {
    
    private final MemberRepository memberRepository;
    
    @Autowired
    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }
}
@Repository
    public class MemoryMemberRepository implements MemberRepository {}

다음과 같이 memberService와 memberRepository가 스프링 컨테이너에 스프링 빈으로 등록되었다.

 

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

MemberService와 MemberRepository의 @Service, @Repository, @Autowired 애노테이션을 제거하고 진행

@Configuration
public class SpringConfig {

    @Bean
    MemberService memberService(){
        return new MemberService(memberRepository());
    }
    @Bean
    MemberRepository memberRepository(){
        return new MemoryMemberRepository();
    }
}

MemberController의 생성자는 @Autowired를 사용한다. SpringConfig 클래스를 생성하고 @Configuration을 사용한다.

스프링 컨테이너에 memberService, memberRepository를 @Bean을 사용해 스프링 빈으로 등록한다.

'Spring' 카테고리의 다른 글

MVC 프레임워크 구현하기 - 2  (0) 2022.10.29
MVC 프레임워크 구현하기 - 1  (0) 2022.10.29
싱글톤 컨테이너 (모각소 4주차)  (0) 2022.07.24
웹 MVC  (0) 2022.07.18
스프링 웹 개발 기초  (0) 2022.07.14