티스토리 뷰

728x90
반응형

 

오늘은 스프링 빈을 등록하는 방법에 대해 알아보도록 하자.

스프링 빈을 등록하는 2가지 방법이 있다.

 

  1. 컴포넌트 스캔과 자동 의존관계 설정
  2. 자바 코드로 직접 스프링 빈 등록

 

이중에서 1번 컴포넌트 스캔과 자동으로 의존관계를 어떻게 설정하는지 알아보도록 하자.

 


 

service에서 돌아간 로직을 화면에 뿌려줄 것이다.
그러려면 controller와 view가 필요하다.
그래서 MemberController를 만들건데 MemberController는 MemberService를 통해 데이터를 등록하고 조회할 수 있어야 한다.
이러한 것을 의존관계가 있다고 표현하고 MemberController가 MemberService를 의존하고 있다고 표현한다.


이제 이러한 작업을 구현해보자.

먼저 Controller 경로에 MemberController.java를 추가하자.

 

 

 

그리고 아래와 같이 @Controller를 붙여주면 다음과 같은 껍데기가 생긴다.

 

 

 

스프링이 뜰때 스프링 컨테이너가 @Controller 가 있으면 해당 클래스를 생성하여 객체로 넣어둔다.
그리고 스프링이 관리하게 된다.
이러한 것을 스프링 컨테이너에서 스프링 빈이 관리된다고 표현한다.

 

 

이제 다음과 같이 코드를 작성해주자.

 

package com.demoproject.demo.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

import com.demoproject.demo.service.MemberService;

@Controller
public class MemberContoller {

    private final MemberService memberService;

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

 

Autowired 라고 하면 스프링 컨테이너에서 서비스를 가져온다는 것이다.
한마디로 컨트롤러와 서비스를 연결시켜 준다고 생각하면 된다.

 


스프링은 어노테이션으로 관리를 해주는데 MemeberService에서는 어노테이션을 넣어주지 않았다.
MemeberService에 @Service를 추가해주자.
Repository도 @Repository를 추가하자.

 

 

 

 

 

Controller - Service - Repository는 아주 정형화된 로직이다.
Controller 에서 외부 요청을 받고 Service에서 비즈니스 로직을 처리해주고 Repository에서 데이터를 저장한다.

 

 

위 세개는 @Autowired 로 연결되어 있고, Dependency Injection 관계라고 할 수 있다.

 

 

위에서 어노테이션으로 등록해준 방법이 컴포넌트 스캔 방법으로 우리는 빈을 등록한 것이다.

 

 

스프링을 쓰면 다 스프링 빈으로 등록해서 쓰는것이 좋다.
@Component 어노테이션이 있으면 스프링 빈으로 자동 등록 되는데 @Controller, @Service, @Repository 모두 @Compoenent를 포함하고 있다.
그래서 3개를 사용해도 자동으로 빈으로 등록이 되는 것이다.

 

 

참고로 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다.
유일하게 하나만 등록해서 공유한다.
따라서 같은 스프링 빈이면 모두 같은 인스턴스이다.

 

 

 

 

이상!

 

 

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31