1.Component란?
● 싱글톤 클래스 빈을 생성하는 어노테이션이다. @Controller @Service @Repository 어노테이션 또한 이에 포함된다.
● @Component 어노테이션은 선언적(Declarative)인 어노테이션이다.
● 즉, 패키지 스캔에게 @Component 어노테이션은 "이 클래스를 정의했으니 스프링 빈으로 등록해줘"라는 의미를 가진다.
● @Controller @Service @Repository 어노테이션이 사용된 곳은 동일하게 스프링 빈으로 등록된다.
● 위 3개의 어노테이션은 특정한 기능에 대한 @Component의 구체화된 형태
2.Controller란?
● Presentation Layer
● 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스에 사용한다.
● @Controller 어노테이션을 사용하여 만들어진다.
● 서버에서 기능별로 API를 생성하고 클라이언트는 필요한 정보를 얻기 위해 적절한 API에 요청한다.
● Controller는 API 창구 역할을 한다.
3.Service란?
● Service Layer
● 비즈니스 로직을 가진 클래스에 사용하며 로직 작성이 필요하다면 Service에 작성하면 된다.
● Controller로부터 정보를 받아 가공을 하고 이를 Repository단으로 넘긴다.
● 또한, Repository에서 DB의 자료를 가져오면 이를 DTO에 담아 컨트롤러에게 전달해준다.
● Service에서 작성되는 메소드의 명은 비즈니스에 가깝게 만든다.
4.Repository란?
● Persistence Layer
● Repository는 작성된 Entity를 통해 연결된 DB에 접근하는 메소드를 사용하기위한 interface이다.
● JPA를 상속받음으로써 기본적인 CRUD의 동작(메소드 사용)이 가능해진다.