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