본문 바로가기

프로젝트17

도서관리 프로젝트[5] IoC 제어의 역전, 인터페이스(interface), @Primary 제어의 역전(Inversion of Control) 스프링 컨테이너가 필요에 따라 개발자 대신 Bean들을 관리(제어)해주는 행위 일반적인 상황에서는 개발자가 직접 객체를 제어해야 했다. new 연산자를 통해 객체를 생성하고, 객체의 의존성을 맺어주고, 초기화를 해주고 등등... 하지만 Spring 에서는 xml파일 또는 어노테이션 방식으로 스프링 컨테이너에 Bean(객체)를 등록하기만 하면, 스프링 컨테이너에서 Bean의 생명주기(생성 -> 의존성 설정 -> 초기화 -> 소멸)를 전부 관리해준다. 즉, 객체에 대한 제어권이 컨테이너로 역전되기 때문에 제어의 역전이라고 하는 것이다. 장점 개발자는 객체 관리에 덜 신경쓸 수 있게 되어 다른 부분에 더 집중할 수 있게 됨 약한 결합(참고 링크)을 이용하여 .. 2023. 6. 22.
도서관리 프로젝트[4] Controller 3단 분리, 스프링컨테이너, 스프링빈, 인스턴스화 Controller 3단분리 클린 코딩을 위해 Controller의 함수 1개가 하고 있던 역할을 3단 분리 하겠습니다. 1. API의 진입 지점으로써 HPPT Body객체로 변환하고 있다. -> Controller 2. 현재 유저가 있는지 없는지 등 확인하고 예외 처리 해준다 -> Service 3. SQL을 사용해 실제 DB와의 통신 담당한다 -> Repository UserController package com.group.libraryapp.controller.user; import com.group.libraryapp.dto.user.request.UserCreateRequest; import com.group.libraryapp.dto.user.request.UserUpdateRequest; .. 2023. 6. 21.
도서관리 프로젝트[3] 회원 수정, 삭제 (update, delete) 수정API 삭제API 1.UserController //수정, 삭제 //json이 들어온걸 객체로 바꾸기 위해서 dto를 만든다. UserUpdateRequest라는 dto @PutMapping("/user") public void updateUser(@RequestBody UserUpdateRequest request) { String sql = "UPDATE user SET name = ? WHERE id = ?"; //특정 id를 가진 유저가 특정 이름으로 변경되어야함. jdbcTemplate.update(sql, request.getName(), request.getId()); } @DeleteMapping("/user") //쿼리가 하나라서 RequestParam사용함 public void de.. 2023. 6. 15.
도서관리 프로젝트[2] - 유저 조회 유저조회 API스펙 * 주의점 - 전체를 조회하기 때문에 쿼리는 없습니다. - @RestController가 있기 때문에, Controller에서 Getter가 있는 객체를 반환하면 JSON 형태가 됩니다. - id는 각 데이터끼리 겹치지 않는 유일한 고유번호를 의미합니다. -> List에 담겨 있는 유저의 순서를 id로 해주면 됩니다~! 쉬어가기 Controller에서 Getter가 있는 객체를 반환하면 JSON 형태가 된다는 것을 증명해보겠습니다. 1. UserController (JSON반환 예시) @GetMapping("/fruit") public Fruit fruit(){ return new Fruit("바나나", 2000); } 2. Fruit (JSON반환 예시) package com.gro.. 2023. 5. 28.
도서관리 프로젝트[1] - 기획과 유저 등록 기획 사용자 - 도서관의 사용자를 등록할 수 있다. (이름 필수, 나이 선택) - 도서관 사용자의 목록을 볼 수 있다. - 도서관 사용자 이름을 업데이트 할 수 있다. - 도서관 사용자 이름을 업데이트 할 수 있다. - 도서관 사용자를 삭제할 수 있다. 책 - 도서관에 책을 등록 및 삭제할 수 있다. - 사용자가 책을 빌릴 수 있다. > 다른 사람이 그 책을 진작 빌렸다면 빌릴 수 없다. - 사용자가 책을 반납할 수 있다. 유저 등록 API 스펙 이제 UserController와 요청을 받을 dto인 UserCreateRequest, 값을 저장할 User클래스를 만들겠습니다. 1. UserController : API 입구 2. UserCreateRequest : 요청 받을 dto 3. User : 값을.. 2023. 5. 28.
[before project] HTTP와 API HTTP HTTP는 HyperText Transfer Protocol의 약자로, 웹 상에서 데이터를 주고받기 위한 프로토콜입니다. 클라이언트(예: 웹 브라우저)와 서버 간의 통신을 담당하며, 웹 페이지의 요청과 응답을 규칙에 맞게 처리하는 역할을 합니다. HTTP 요청과 응답은 크게 두 부분으로 구성됩니다: 헤더(Header)와 바디(Body). 헤더(Header)와 바디(Body). 1. 헤더(Header): HTTP 헤더는 요청이나 응답의 메타데이터를 포함하는 부분입니다. 헤더는 클라이언트가 서버에 전달하는 요청 정보나 서버가 클라이언트에게 전송하는 응답 정보에 대한 세부 정보를 포함합니다. 일반적으로 헤더는 키-값 쌍의 형태로 구성되며, 콜론(:)으로 키와 값을 구분합니다. 몇 가지 흔히 사용되는 .. 2023. 5. 27.