Spring Boot: Gradle 버전 확인하기
·
Spring 기초/Spring 설정
Spring Boot: Gradle 버전 확인하기 📌 서론 이번 포스트에서는 특정 API나 Jenkins를 사용할때 Spring과 그 tool의 Gradle 버전을 맞춰주기 위해 필요한 Spring Boot 프로젝트의 gradle 버전 확인하는 방법을 소개한다. 1. IntelliJ에서 프로젝트 내부 파일 검색하기 인텔리제이 기준으로는 shift + shift (shift두번 빠르게 클릭)으로 파일명을 검색하는게 가장 빠르다. 이 파일을 검색해 보자 : gradle-wrapper.properties 2. 파일 경로 확인하기 gradle-wrapper.properties 파일로 들어간 후 아래의 이미지와 같이 intelliJ 좌측 상단을 보면 동그라미가 겹쳐진 모양이 있는데 이걸 클릭한다. 동그라미를 클릭..
Spring: @ControllerAdvice와 AOP를 함께 사용하여 에러 로깅하기
·
Spring 기초/Spring 기초 지식
@ControllerAdvice와 AOP 를 동시에 적용하여 로깅을 해보자 📌 서론 Spring Boot에서는 일반적으로 @ControllerAdvice와 @ExceptionHandler를 사용하여 전역 에러 핸들링을 수행한다. 그러나 이러한 방식은 상세한 로깅에 한계가 있을 수 있다. 이 글을 작성하게 된 계기는 많은 개발자들이 로깅을 어떻게 효율적으로 할 수 있을지, 그리고 예외 상황에서 어떻게 로깅을 해야 할지에 대한 고민을 하고 있기 때문이다. 다니선 회사의 동료 또한 이에 대한 궁금증을 가졌기에 이 글을 통해 그러한 고민을 조금이라도 해결할 수 있으면 좋겠다. 1. 문제 상황 파악 @ExceptionHandler가 명시된 메서드에서는 지정된 Exception 객체만을 받을 수 있기 때문에, 에러..
Spring Boot: @ControllerAdvice/@RestControllerAdvice로 예외처리하기
·
Spring 기초/Spring 기초 지식
@ControllerAdvice와 @RestControllerAdvice에 대해 자세히 알아보자 📌 서론 프로그래밍에서 예외 처리는 매우 중요한 부분이며, Spring Boot에서는 @ControllerAdvice와 @RestControllerAdvice를 통해 이를 효율적으로 수행할 수 있다. 이 어노테이션들은 코드의 재사용성과 유지 보수성을 높여, 복잡한 비즈니스 로직에서도 예외 상황을 안정적으로 관리할 수 있게 해준다. 1. @ControllerAdvice이해 @ControllerAdvice란? @ControllerAdvice는 Spring 3.2에서 도입된 어노테이션으로, 모든 @Controller 클래스가 공유하는 공통 로직을 정의할 때 사용한다. 주로 예외 처리와 바인딩 설정, 모델 객체 등에..
[스프링, 스프링 부트] Spring - ajax로 호출하는 controller 메서드 구현방법
·
Spring 기초/Spring 기초 지식
이번에는 javaScript에서 ajax로 컨트롤러의 메서드를 호출할때 응답을 어떤식으로 하는게 좋을지 알아보자 바로 응답 객체를 반환하냐 아니면 ResponseEntity로 감싸서 반환하냐 둘중에 뭐가 더 좋을까? 1. 바로 응답 객체를 반환 받는방식 예시코드 /** * [READ] * 각각의 게시글에 달린 대댓글을 리스트로 받아오는 컨트롤러 * ajax로 호출한다. -> 동작: 댓글 하단의 댓글보기를 클릭하면 이 컨트롤러를 통해 그 댓글의 대댓글 정보를 보여준다. */ @ResponseBody @GetMapping("/get/{boardId}") public Page getBoardSubCommentList( @PathVariable Long boardId, @PageableDefault(size =..
[스프링, 스프링부트] Spring - 게시글 삭제중 발생한 오류 해결
·
Spring 기초/Spring 오류해결
게시글 삭제를 하던중에 오류가 발생했다. 이유를 알아보자 1. 상황 설명 아래와 같은 게시글 상세보기 페이지에서 대댓글이 달린 댓글을 삭제했을때 오류가 발생했다. 에러 메시지 확인 {"errorMessage":"could not execute statement [Cannot delete or update a parent row: a foreign key constraint fails (profile.board_sub_comment, CONSTRAINT FK_BOARD_SUB_COMMENT_board_comment_id_BOARD_COMMENT_board_commen FOREIGN KEY (board_comment_id) REFERENCES board_comment (board_comment_id) ON)..
Spring: Maven과 Gradle의 차이
·
Spring 기초/Spring 기초 지식
Maven와 Gradle의 차이점이 뭘까? 📌 서론 스프링을 사용하다 보면 라이브러리를 다운받기 위해 pom.xml이나 build.gradle에 사용하고자하는 라이브러리를 적어주곤 한다. 그런데 이런 것들은 maven, gradle에 의해서 다운받아지고 라이브러리 의존성이 관리되는데 이것들에 대해서 자세히 알아볼 기회는 많지 않다. 이번에는 maven, gradle에 대해서 알아보도록 하자 아래의 글을 통해 maven과 gradle에 대한 이해를 하고 오시는것을 추천합니다! Spring: Maven이 뭘까? 이번 포스트에서는 Maven에 대해서 알아보자 📌 서론 이전 회사에서 작업을 할 때 SpringFramework3.x.x 버전을 사용하고 Maven을 사용했던 기억이 있다. 이때 첫 프로젝트를 하면서..
SpringBoot: 인터셉터(interceptor)의 동작원리
·
Spring 기초/Spring 기초 지식
스프링 부트에서 사용되는 Interceptor의 동작원리를 알아보자 1. 스프링부트에서 인터셉터란? 스프링부트에서의 인터셉터 스프링부트에서 인터셉터는 웹 애플리케이션에서 요청과 응답을 처리하는 중간 단계에서 사용된다. 인터셉터는 특정 URI 패턴에 대한 요청을 가로채어, 컨트롤러가 처리하기 전후에 추가적인 작업을 할 수 있게 해 준다. 이를 통해, 로그인 체크, 권한 검증, 로깅 등과 같은 작업을 효율적으로 처리할 수 있다. 인터셉터의 동작 과정 클라이언트로부터 들어오는 요청(HttpRequest)을 가로챈다. 가로챈 요청에 대해 원하는 처리(예: 로그인 체크, 권한 체크 등)를 수행한다. 처리가 끝난 후, 요청을 원래의 목적지인 컨트롤러로 전달한다. 컨트롤러가 응답(HttpResponse)을 반환하면,..
Spring MVC의 Model, ModelAndView, ModelMap 비교
·
Spring 기초/Spring 기초 지식
Model, ModelAndView, ModelMap의 차이점 그리고 @ModelAttribute에 대해서 알아보자 📌 서론 스프링 프레임워크에서는 컨트롤러(Controller)에서 뷰(View)로 데이터를 전달하는 여러 가지 방법이 있다. 이번 포스트에서는 이러한 방법 중에서 스프링 MVC에서 사용되는 Model, ModelMap, ModelAndView의 사용에 대해 좀 더 상세하게 설명하도록 한다. 1. 스프링 부트의 모듈 이해하기 Model Model은 스프링 MVC에서 뷰 렌더링에 사용되는 데이터를 컨트롤러로부터 뷰로 전달하는 역할을 하는 기본 인터페이스다. 컨트롤러에서 Model 객체에 데이터를 추가하면, 이 데이터는 뷰로 전달되어 활용될 수 있다. Model에 데이터를 추가하고 싶다면, 'a..