본문 바로가기

SPRING/Spring

[스프링| 스프링 입문 | 코드로 배우는 스프링] 컴포넌트 스캔과 자동 의존관계 설정

  1. @Controller
    • 기능: @Controller 애노테이션은 해당 클래스가 웹 요청을 처리하는 컨트롤러임을 나타냅니다. 스프링 MVC에서 모델, 뷰, 컨트롤러(MVC) 패턴의 컨트롤러 역할을 합니다. 이 애노테이션이 붙은 클래스는 웹 요청과 응답을 처리하는 메서드를 포함하며, 스프링이 이를 컴포넌트로 인식하여 웹 요청을 처리할 수 있도록 관리합니다.
  2. @Service
    • 기능: @Service 애노테이션은 해당 클래스가 비즈니스 로직을 처리하는 서비스 계층임을 나타냅니다. 이 계층은 주로 비즈니스 요구사항을 구현하며, 데이터 접근 계층과 컨트롤러 계층 사이에서 중개자 역할을 합니다. 스프링 컨테이너는 이 애노테이션을 사용하여 비즈니스 로직 처리를 위한 서비스 컴포넌트를 관리합니다.
  3. @Repository
    • 기능: @Repository 애노테이션은 해당 클래스가 데이터베이스와의 통신을 담당하는 영속성 관리 계층(저장소 계층)임을 나타냅니다. 이 애노테이션을 사용하면 스프링이 데이터베이스 연결과 데이터 조작을 처리하는 클래스로 인식하고, 예외 변환 같은 데이터 접근 로직을 관리하는데 도움을 줍니다.
  4. @Autowired
    • 기능: @Autowired 애노테이션은 자동 의존관계 주입을 위해 사용됩니다. 이 애노테이션은 주로 변수, 세터 메서드, 생성자에 사용되며, 스프링이 자동으로 해당 타입의 빈을 찾아서 주입합니다. 이 과정은 개발자가 직접 의존 객체를 생성하고 연결하지 않아도 되도록 해서 개발의 편의성을 증대시킵니다.
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;
    }
}