스프링

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

hmjhaha 2024. 1. 20. 18:53

정형화 되어있는 패턴

@Controller  - 외부 요청 받음
@Service  - 비즈니스 로직 만듦
@Repository   - 데이터 저장함

 

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


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


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 {

private final MemberService memberService;

 

@Autowired

public MemberController(MemberService memberService) {

this.memberService = memberService;

}

 

 

회원 서비스 스프링 빈 등록

 

@Service

public class MemberService {

private final MemberRepository memberRepository;

 

@Autowired

public MemberService(MemberRepository memberRepository) {

this.memberRepository = memberRepository;

}

}

 


memberService -> memberRepository
참고: 생성자에 @Autowired 를 사용하면 객체 생성 시점에 스프링 컨테이너에서 해당 스프링 빈을 찾아서 주입
한다. 생성자가 1개만 있으면 @Autowired 는 생략할 수 있다.