[Spring] @Component @Controller @Service @Repository

WOOK JONG KIM·2022년 10월 24일
0
post-thumbnail

출처 : https://velog.io/@jybin96/Controller-Service-Repository-가-무엇일까

MVC(Model,View,Controller)

Model
어플리케이션이 무엇을 할 것인지 정의하는 부분

-> DB와 연동하여 사용자가 입력한 데이터사용자에게 출력할 데이터를 다룹니다.

View
사용자에게 시각적으로 보여주는 부분

Controller
Model이 데이터를 어떻게 처리할지 알려주는 역할

-> 클라이언트가 보낸 데이터가 있으면 모델을 호출하기전에 적절히 가공을 하고 모델을 호출, 이후 모델이 업무 수행을 완료하면 그결과를 가지고 View에게 전달하는 역할

서로 분리되어 각자의 역할에 집중할 수 있게끔하여 개발을 하여 유지보수성, 애플리케이션의 확장성, 유연성 증가등의 장점 부각 및 중복코딩이라는 문제점을 사라지는 효과를 가질수 있기 에 MVC 패턴을 사용

@Controller

주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할

즉 사용자의 요청이 진입하는 지점이며 요청에 따라 어떤 처리를 할지 결정을 Service에 넘겨줌

@Controller -> 주로 뷰를 반환하기 위해 사용

@Controller
public class Controller{
    @GetMapping("/home") //home으로 Get요청이들어오면
    public String homepage(){
        return "home.html"; //home.html 문자열 응답
    }
}

@ResponseBody 어노테이션과 같이 사용하면 RestController와 똑같은 기능을 수행

@RestController

주용도 : JSON/XML형태로 객체 데이터 반환

@RestController // JSON으로 데이터를 주고받음을 선언
public class ProductRestController {

    private final ProductService productService;
    private final ProductRepository productRepository;

    // 등록된 전체 상품 목록 조회
    @GetMapping("/api/products")
    public List<Product> getProducts() {
        return productRepository.findAll();
    }
}

Service란

Service가 알맞은 정보를 가공하는 과정 -> 비즈니스 로직을 수행한다

Service가 비즈니스 로직을 수행하고 데이터베이스에 접근하는 DAO를 이용해서 결과값을 받아옴

DAO : 쉽게 말해 Mysql 서버에 접근하여 SQL문을 실행할 수 있는 객체

JPA : 매우 적은 코드로 DAO를 구현 가능하게
-> 인터페이스를 만드는 것 만으로도 Entity (@Entity)클래스에 대한 insert, Update, Delete, Select 를 실행할 수 있게 해준다

profile
Journey for Backend Developer

0개의 댓글