[Java Spring] 3. 스프링 빈과 의존관계(DI)

Hayoon·2022년 6월 27일
0

Spring 정리

목록 보기
3/11

MemberController, MemberService, MemberRepository를 각각 구현했으나 어떻게 연결관계를 이을 수 있을까 ? 여기서 스프링의 진가가 발휘된다.

생성자에 @Autowired Annotation를 넣어 스프링이 연관된 객체를 컨테이너에서 찾아서 넣어준다.

@Controller // Spring Bean으로 자동 등록
public class MemberController {

    private final MemberService memberService;

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

Service 에서도 @Service를 넣고 생성자에 @Autowired를 넣어 컨테이너에서 Spring Bean을 찾아서 주입.

@Service
public class MemberService {

    private final MemberRepository memberRepository;

    @Autowired //2번
    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

@Autowired 1번을 통해 Controller->Service로 연결이 되었고, @Autowired 2번을 통해
Service->Repository가 연결되었다. 최종 구조도는 다음과 같다 !

현재 MemoryMemberRepository를 임시 구현 메모리객체로 만들어놓은 상황인데, 아직 DB가 정해지지 않은 상황이다. 이 때는 @Component(Controller, Repository, Service)스캔 방식대신 @Bean으로 직접 등록하여 코드 수정없이 바꿔치기가 가능하다.

추가로, Dependency Injection에는 필드주입/setter 주입/생성자 주입 이렇게 3가지가 있지만 실무에서는 생성자 주입을 많이 쓰는 편이고, 주로 컴포넌트 스캔을 사용한다고 한다.

*스프링 공부를 하면서 스프링이 뭔지, 장점은 또 뭔지에 대해 추상적으로만 개념적으로 알고 있었다.
다시 한 번 복습을 하면서 조금이나마 실루엣이 보이는 듯하다. 정진!

profile
Junior Developer

0개의 댓글