본 포스팅은 인프런 - Spring Boot를 이용한 RESTful Web Service 개발 강의를 바탕으로 공부하고 정리한 글입니다. Richardson - Maturity Model Richardson은 REST를 설계한 개발자이다. Richarson이 말하는 Maturity Model이란 REST API를 개발할 때 확인해야 될 REST방식의 주요 요소들를 3가지 단계로 나눈 모델을 말한다. LEVEL 0 REST 방식으로 어플리케이션이 고려되었다기 보다, 기존의 resource를 웹서비스의 형태로 제공해서 단순히 URI만 매핑한 형태이다. 예시 http://server/getPosts http://server/deletePosts http://server/doThis 위 예시들을 보면 리소스에 ..
전체 글
🔥 문제 발생 상황 org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table user (id integer not null, join_date timestamp, name varchar(255), password varchar(255), ssn varchar(255), primary key (id))" via JDBC Statement 🦠 문제 원인 파악 해당 에러는 이미 데이터베이스의 예약어가 존재하여 발생하는 에러이다. 🔑 문제 해결 나와 같은 경우는 예약어로 사용되는 User를 entity 이름으로 사용하여 문제가 발생했으며, 아래와 같이 entity 이름을 Users로 지정해줌으로 해당 문..
의존성 추가 📁 maven - pom.xml org.springframework.boot spring-boot-starter-security org.springframework.security spring-security-test test 📁 gradle - build.gradle implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.security:spring-security-test' 의존성을 추가해준 뒤 포스트맨으로 조회 요청을 하면 다음과 같이 401 Unauthorized라고 권한 오류가 발생한다. security가 생성해주는 password 사용하기 로그에서..
🔥 문제 발생 상황 SpringBoot에 Actuator를 연동하여 실행했더니 아래와 같은 에러 메세지가 발생하였다. org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException Caused by: java.lang.NullPointerException: null at springfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionW..
본 포스팅은 인프런 - Spring Boot를 이용한 RESTful Web Service 개발 강의를 바탕으로 공부하고 정리한 글입니다. 스프링 부트가 제공하는 Filtering 기법을 이용해 전달하고자 하는 응답 데이터 값을 제어하는 방법을 알아보도록 하자. 아래는 간단한 사용자 관리 Rest API 예제 소스 코드이다. 해당 예제 소스 코드를 바꿔가며 차근차근 알아보도록 하자. 👉🏻 사용자 도메인 객체 @Data @AllArgsConstructor public class User { private Integer id; private String name; private Date joinDate; private String password; private String ssn; } 👉🏻 사용자 서비스 @..
본 포스팅은 인프런 - Spring Boot를 이용한 RESTful Web Service 개발 강의를 바탕으로 공부하고 정리한 글입니다. Exception Handling 프로그래밍에서 예외 처리는 아주 중요하면서도 아주 어렵다 😓 상세하고 다양하게 예외를 잡아 처리해준다면, 클라이언트도 그렇고 서버도 그렇고 더 안정적인 프로그램이 될 수 있도록 도와준다. 예외 처리를 하는 경우와 방법은 다양한데, 여러 예외 처리들을 적용하다보면 코드가 엄청나게 복잡해진다. if문으로 잡든 try-catch로 잡든 상위 메소드로 예외처리를 위임하든 코드는 복잡해진다. 그렇게 되면 유지보수하기가 아주 어려워진다는 것이 문제이다. 또한 비즈니스 로직에 집중하기 어렵고, 비즈니스 로직과 관련된 코드보다 예외 처리를 위한 코드..
본 포스팅은 인프런 - Spring Boot를 이용한 RESTful Web Service 개발 강의를 바탕으로 공부하고 정리한 글입니다. HTTP Status Code 제어하기 클라이언트가 요청을 보내면 서버는 그 요청을 처리한 뒤 응답코드를 반환한다. 이때 응답코드로 적절한 상태코드를 반환하는 것이 좋은 REST API 설계하는 방법이다. 성공 응답이라 하여 그냥 200 OK만을 응답코드로 반환하는 것보다, 새로운 객체(인스턴스)생성이 있는 경우에는 201 Created와 함께 생성된 객체를 확인할 수 있는 정보를 함께 반환해준다면 더할나위 없이 좋을 것이다! 그럼 어떻게 상태코드를 제어할 수 있을까? 예제를 통해 알아보자. 간단하게 사용자를 등록하는 예제이다. 👉🏻 사용자 도메인 클래스 @Data @..
이번 포스팅은 Java에서 배열을 자르는 2가지 방법에 대해 소개한다. 1️⃣ 반복문 이용 2️⃣ Arrays.copyOfRange() 이용 반복문 이용하기 public class ArraySplit { public static void main(String[] args) { // 원본 배열 int[] arr = {0, 1, 2, 3, 4, 5}; // 배열을 자를 index int position = 3; // 자른 배열을 담아줄 새로운 배열 int[] splitArr = new int[position]; // 배열 자르기 for (int i = 0; i < arr.length; i++) { if (i < position) { splitArr[i] = arr[i]; } } System.out.print..