분류 전체보기89 @ControllerAdvice 우선순위 설정하기 공백 기간 동안 어떤 플랫폼에서 블로그를 운영해야 하나 고민하였는데, 결국 다시 여기로 돌아오게 되었다. 2022년에도 많은 뻘짓을 하며 훌륭한 주니어 개발자, 시니어 개발자가 되어 보자. 오늘의 Trouble 여러개의 RestControllerAdvice를 사용하는 환경에서 우선순위를 설정해주지 않아 특정 예외를 Exception을 처리하는 공통 예외 처리용 RestControllerAdvice의 메서드가 처리하는 상황 해결 방법 공통 예외 처리 RestControllerAdvice를 제외한 RestControllerAdvice 클래스에 @Order 어노테이션을 추가해 해당 어노테이션이 적용된 컴포넌트의 정렬 순서를 설정. @Order @Retention(RetentionPolicy.RUNTIME) @.. 2022. 1. 9. Statement vs PreparedStatement Statement와 PreparedStatement는 JDBC를 통해 SQL를 실행하기 위해서 사용되는 객체이다. PreparedStatement와 Statement의 가장 큰 차이는 캐시를 사용하느냐에 있다. 이 두 객체는 SQL을 실행할 때 3단계를 거치게 된다. 1) SQL 문장 분석 - 문법 검사 - 의미 검사 - 권한 검사 2) 컴파일 3) 실행 Statement를 사용하는 경우, SQL을 실행할 때마다 1 ~ 3단계를 모두 거치게 된다. 반면에, PreparedStatement를 사용하는 경우에는 처음 실행하는 경우에만 3단계를 거치고 캐시에 올려둔다. 이후에는 캐시에 올라가 있는 것을 재사용하게 된다. Statement Connection connection = DBConnection.get.. 2021. 10. 11. 일반 Header Header 종류 1. General Header: 메시지 전체에 적용되는 정보에 대한 표현 2. Request Header: 요청에 대한 정보 3. Response Header: 응답에 대한 정보 4. Entity Header: Entity Body에 대한 정보 ex) Content-type: application/json HTTP message는 Header와 Body로 구성되는데, 각각을 표현 헤더와 표현 데이터라고 칭한다. 표현이란 요청이나 응답에서 전달하는 실제 데이터를 말하며, 표현 헤더는 표현 데이터를 해석할 수 있도록 데이터 유형, 데이터 길이와 같은 정보를 제공한다. 표현 헤더 • Content-Type: 표현 데이터의 타입 미디어 타입, 문자 인코딩 정보를 넣어준다. ex) text/h.. 2021. 10. 4. HTTP Status - 상태코드 2XX - 요청 정상 처리 • 201 Created - 요청이 성공적으로 처리되어 새로운 리소스가 생성되었음을 의미한다. - 생성된 리소스는 응답의 Location 헤더 필드로 식별할 수 있다. - POST 요청으로 신규 리소스를 생성했을 때 응답이다. • 204 No Content - 요청을 성공적으로 처리했으나, 응답 Payload에 보낼 데이터가 없음을 의미한다. - 웹 문서 편집기에서 [저장]을 요청할 경우가 대표적인 예시이다. - [저장]의 결과로 어떤 내용도 없어도 괜찮다. - [저장]을 하더라도 같은 화면을 유지해야 한다. 3XX (Redirection) - 요청을 완료하기 위해서 추가 행동이 필요 • 웹 브라우저는 3XX 응답에 Location 헤더가 존재하면, Location 위치로 이동.. 2021. 9. 27. HTTP Method 활용 행복했던 명절 연휴 마지막 날... HTTP Method가 어떻게 활용되는 지 알아보자! 1. 데이터 전송 방식 (클라이언트 -> 서버) 1. 쿼리 스트링(파라미터)를 이용한 데이터 전송 방식 • GET 2. body를 이용한 데이터 전송 방식 • POST, PUT, PATCH 2. 데이터 조회 및 전송 1. 정적 데이터 조회 • 이미지와 같은 정적 리소스 • 쿼리 파라미터를 사용하지 않고 리소스 경로(URI)를 통해 조회가 가능하다. • GET 방식 2. 동적 데이터 조회 • 검색, 목록에 대한 정렬 필터 시 주로 사용 • GET 방식과 쿼리 파라미터를 사용해 데이터를 전달한다. 3. HTML Form을 이용한 데이터 전송 • 회원 가입, 상품 주문과 같은 데이터 변경 시 사용 • POST와 GET 방.. 2021. 9. 22. HTTP API 설계 용어 HTTP API URI 설계 용어 문서 (document) 하나의 파일, 객체 인스턴스, DB row과 같은 단일 개념을 말한다. ex) /files/image.png 컬렉션 (collection) 서버가 관리하는 리소스 저장소를 말한다. 서버가 리소스의 URI를 생성하고 관리한다. POST 방식을 통해 신규 리소스를 생성시에 사용되는 URI 타입이다. ex) /users 스토어 (store) 클라이언트가 관리하는 리소스 저장소를 말한다. 클라이언트가 리소스의 URI를 인지하고 관리한다. 파일같은 리소스를 관리할 때 사용된다. ex) /files 컨트롤 URI 위 3개의 개념으로 해결하기 어려운 프로세스를 실행하기 위해 사용되는 개념이다. URI에 동사를 이용해 사용한다. ex) /users/{id}/d.. 2021. 9. 14. Spring Boot에서 JPA Entity 테이블 생성 이슈 엔티티 클래스에 대한 모든 설정이 마무리 되었으나, 프로젝트 실행 시 DDL 실행 및 테이블 생성이 되지 않음. 원인 엔티티 클래스가 위치한 domain 패키지의 위치가 프로젝트 실행 클래스(XXXApplication)보다 상위에 있어 ComponentScan 기본 범위에 포함되지 않음. com.[project] XXXApplication.java domain controller service ... 해결 domain 패키지의 위치를 프로젝트 실행 클래스(XXXApplication)와 동일한 Depth로 이동시켜줌 H2 사용을 위해 H2 (Embedded) 모드로 로컬에 DB를 생성해준 뒤, H2 (Server)로 접속하여 DB 연결 application.yml 에서 url 수정: jdbc:h2:t.. 2021. 9. 14. Gradle 프로젝트 import 하기 Eclipse만 사용해왔던 필자가 여러모로 개발자에게 도움을 많이 준다는 인텔리제이에 눈을 뜨게 되었다. 마침 사이드 프로젝트를 진행 중이기에 이번 기회에 인텔리제이를 사용해보기로 했다. 오늘은 바로 그 시작인 Gradle프로젝트를 import하는 방법에 대해 알아보자. 1. Gradle 프로젝트 생성 Gradle프로젝트생성 페이지에 접속해 아래 사진과 같이 Gradle 프로젝트를 생성하였다. 2. Gradle 프로젝트 Open 1번에서 프로젝트 설정을 마친 뒤 생성하기를 누르게 되면 zip파일을 다운로드하게 된다. 이 파일의 압축을 풀어준 뒤 [사진 2]에서 Open을 눌러 해당 폴더를 선택해 열어준다. 3. 프로젝트 설정 2번을 통해서 Gradle프로젝트 폴더를 연 뒤, 확인해야 할 부분이 있다. 우.. 2021. 9. 10. POST와 PUT 1. POST 1. 리소스 생성 2. URI가 컬렉션이어야 한다. (ex. POST /users) 3. 리소스 생성 성공 시, 201(CREATED) HTTP STATUS와 함께 리소스 생성 위치 정보가 담긴 Location 응답 헤더를 포함한다. ※ 사용해야 하는 경우 a. 리소스 생성 b. 요청 데이터 처리 c. 다른 메서드로 처리하기 애매한 경우 2. PUT 1. 리소스 변경, 없는 경우에는 생성 2. URI에 변경할 리소스의 식별자가 포함되어야 한다. (ex. PUT /users/100) ※ PATCH와의 차이점 a. PUT은 파일 덮어쓰기와 같다. 따라서, 수정할 부분에 대해서만 명시할 경우, 명시되지 않은 부분은 null 혹은 default로 처리 된다. b. PATCH는 부분적으로 수정하는 .. 2021. 9. 6. 이전 1 2 3 4 5 6 ··· 10 다음