24/12/17(화)
책임
- 클라이언트(고객)의 요청 처리 (endpoint 정의)
- 요청 시 필드 데이터 검증
- 클라이언트에게 응답하기 (응답 코드, 데이터)
🧐 컨트롤러는 여러개가 있을 수 있다.
상품 controller , 댓글 컨트롤러, ~~~
의심을 들면 더블체킹을 해야한다. 그 필요를 없애기 위해서 컨트롤러에서 검사해주는 역할, 즉 데이터가 잘못전달되면 에러를 반환한다.
create(), findOne(), findAll(), deleteOne(), …역할
- 자바 프로그래밍할 때의 핵심 로직(비지니스 로직) 처리
- repository를 활용해서 함수 만들어 일시키기
만들어 놓으면 @Controller(컨트롤러)에서 @Depedency Injection (DI, 의존성 주입) 받음
한 오브젝트가 다른 오브젝트에 의존할 때 (다른 오브젝트를 필요로 할 때)
❌ 필요한 오브젝트를 직접 만들지 않고
✅ 이미 만들어진 오브젝트를 주입(전달)받는 것
🤖생성자 주입 방식
의존성주입 방식에서 내가 사용할 것은 생성자 주입방식이다.
이 방식을 사용하면 테스트 코드 작성하기도 편하기 때문에 이 방식으로 사용한다.
@RestController
public class ProductRestController {
private ProductService productService;
public ProductRestController(ProductService productService) { // @Autowired 생략됨
this.productService = productService;
}
}
역할
- DB에 데이터를 저장, 조회 등
- 매서드를 활용하기 위한 파일
public interface XXXXRepository extends JpaRepository<클래스이름, 클래스 id 데이터타입>
save, findAll, findById 등 자주 사용되는 repository 메서드들을 구현해 놓았음
역할
- 도메인 모델링
- 사업 도메인을 어떻게 클래스로 구현해야 데이터를 잘 관리할 수 있을까?
(API 신경 안 씀)- DB 테이블 정의
@entity 이게 있어야 진짜 entity가됨@id id가 없으면 말이안됨. id값을 찾을 수 없다는 건데 이러면 특정 데이터를 수정, 삭제, 읽기 등등이 다 안됨. 즉, 이게 없으면 데이터를 식별할 수가 없게 됨역할
- 데이터를 전달하는 것
- Request(요청)
클라이언트 → 서버- Response(응답)
서버 → 클라이언트 (서버 ↔ 클라이언트 주고받는 데이터는 JSON 형식)- 검증(validation) 기준
사용자가 데이터 입력
-> Request로 데이터 들어옴 (사용자의 요청) 이때 작성하는 코드가 디티오(레코드)
-> 여기서 들어온 데이터에 대해 validation(검증)을 하고 검증이 끝나면 entity로 넘어감(이건 그냥 클래스로)
-> 마지막에 controller에 넘어와 함수를 만나고 return을 해주게됨
😐 느낀점
결국에는 컨트롤러가 전체를 담당하고, 그 안에 필요한 것들을 넣어줘야한다..
전체적인걸 보고, 세부적인걸로 들어가야 제대로 할 수 있을 것 같다!!