Spring Boot 기반으로 프로젝트를 작성하고 있는데 특정 크기를 넘어가는 파일을 전송하면 위처럼 500 에러가 발생하는 것을 확인했다.콘솔을 확인한 결과 FileSizeLimitExceededException이란 예외가 발생했는데 이름과 설명만 봐도 알 수 있듯
서론 지난 스프링 부트 애플리케이션 배포 #2에서 언급했듯이 application properties에 hibernate.dialect가 설정되지 않아 데이터베이스 연결이 정상적으로 이루어지지 않았던 적이 있다. 아직 어째서 로컬 환경에서 테스트할 때는 datasou
이전 포스트에서 언급했던 것처럼 스프링에서는 사용자가 전송하는 파일의 크기나 요청 자체의 크기가 설정을 초과하면 예외를 발생시킨다. 업로드된 파일이 크기 제한을 초과할 경우 FileSizeLimitExceededException가 발생하며 이는 ExceptionHand
스프링 프레임워크에서는 객체를 검증할 때 Hibernate의 Validator나 직접 구현한 Validator 등을 사용할 수 있다. 현재 진행하고 있는 개인 프로젝트는 스프링 부트 기반이기 때문에 spring-boot-starter-validation에 포함된 Hib
스프링에서 @Valid 어노테이션을 이용해서 객체를 검증할 수 있다. 객체에 정의된 제약사항(@NotBlank, @Max 등)을 이용하여 검증할 수 있으며 객체 뿐 아니라 메서드의 파라미터, 반환값도 검증할 수 있다.그런데 객체를 검증하기 위해 사용할 수 있는 @Val
서론 스프링 프레임워크의 핵심 기능은 웹 애플리케이션을 작성할 수 있는 스프링 MVC 모듈일 것이다. 스프링 프레임워크에서는 웹 애플리케이션을 작성하는 데 필요한 여러 기능들을 제공하며 스프링 부트에서는 웹 서버까지 내장해서 제공하고 있다. 본론 스프링 MVC는 여러
최근에는 스프링 부트 기반 RESTFul API를 활용하는 할 일 관리 애플리케이션을 만드는 데 집중하고 있다. 설계된 API에서는 어떤 엔티티를 조회하거나 수정한 후 해당 엔티티의 정보(회원의 이름, 항목의 내용 등)를 DTO 객체에 담아서 JSON 형식으로 반환하고
이번에 SimpleBBS, SimpleTodoList 두 프로젝트에 모두 스프링 시큐리티를 적용하면서 MVC(정확히는 SSR이라고 하는듯)와 API 환경의 애플리케이션에서 스프링 시큐리티를 어떻게 적용할 수 있는지를 조금이나마 알게 되었다.SimpleBBS에서는 폼 로
최근 프로그래머스 데브코스에서 강의를 듣고 있는데 지난 면접에서 물어봤던 트랜잭션의 전파와 고립 레벨을 다루는 내용이 있었다. 그래서 좀 더 확실하게 알아보고자 @Transactional 어노테이션의 propagation 속성을 활용하여 트랜잭션의 전파를 실습해보는데
이전의 개인 프로젝트나 데브코스에서 진행했던 팀 프로젝트나 최근 진행한 프로젝트, 그리고 앞으로도 진행할 프로젝트는 JWT를 활용한 Stateless 한 인증 방식이 주가 될 것 같다. 그래서 처음에 구현할 때는 인터넷에서 관련 예제를 받아서 따라해보면서 적용하는 방식
Spring Security를 적용해서 HTTP 요청에 대해 인증 및 인가를 적용할 경우 시큐리티 필터 체인에 의해 인증 여부나 인가 여부에 따라 요청이 수락되거나 거절된다. 그런데 필터 체인 특성상 이런 Spring Security에 의한 차단은 서블릿 필터 단계에
본 내용은 Spring Boot 2.x의 Jackson을 기반으로 작성하였다.나는 API 응답 클래스를 getter 메서드와 final 필드의 조합으로 작성하는 편이다.이 경우 한 번 생성한 응답이 중간에 실수로라도 변경될 일이 없고 어떤 데이터를 표현한다는 목적 자체
이번에 모 기업에 지원해서 과제 테스트를 수행했다. 기능은 완성했지만 과제의 품질을 위해 테스트 코드를 작성했는데 이상하게 애플리케이션 실행 중에는 정상적으로 동작하던 기능이 테스트 코드에서는 제대로 동작하지 않았다.해당 기능은 일대다 연관관계의 엔티티를 저장하는 기능
예전에 작성했던 포스트에 달린 댓글에서 고민했던 부분은 지난 기술 면접을 통해 JWT를 걷어내고 세션으로 돌아가자고 결정하게 되었다. 그러면서 경험한 내용을 적어보고자 한다.JWT 대신 세션을 사용하려는 이유는 이전 포스트에서 여러번 언급했으니 더 이상 적을 필요는 없
서론 사내 프로젝트(이하 P)에서는 외부 솔루션을 이용한 관리 시스템(이하 K)과 연동하여 동작하고 있다. 관리의 편의성을 위해서 P는 K와 별도로 데이터베이스를 운영하고 있고(K에서 유지할 필요가 없는 P 만의 데이터 등) K는 P 말고도 다른 프로젝트들과 연동하고