본문 바로가기

Spring32

Spring - @ExceptionHandler & @ControllerAdvice & @RestControllerAdvice 들어가며 개발에 있어서 예외 처리는 아주 중요한 작업이다. 예외처리를 해주지 않는다고 해서 잘 돌아가는 로직이 안 돌아가는 것은 아니지만 유지 보수 측면에서 보았을때 더 안정적이고 효율을 높이기 위해서는 예외처리 작업이 아주 중요하다. 예외를 처리하는 방법은 일반적으로 메서드 내에서 예외 상황을 try-catch로 잡아서 처리하는 방법이 있지만 이렇게 처리를 하게 되면 한두개를 처리할때는 상관이 없지만 서비스의 규모가 커짐에 따라 협업함에 있어서 코드는 복잡해지고 유지보수성이 떨어지게 된다. 하여 비즈니스 로직에 집중하기 어려워지고 이러한 비즈니스 로직보다 예외처리 관련 코드가 더 많아지는 경우도 생기게 된다. 이러한 문제를 개선해줄수 있는 @ExceptionHandler & @ControllerAdvi.. 2022. 3. 21.
@PathVariable & @RequestParam 어노테이션 들어가며 스프링 컨트롤러에서 파라미터를 받을 때 사용하는 @Pathvariable와 @RequestParam 어노테이션에 대해 정리한다. @PathVariable - Restful API URI형태로 요청을 받을 때 @PathVariable 어노테이션을 사용한다. - http://localhost:8080/user/email/{email} 형태로 쿼리스트링 형식으로 들어오는 @RequestParam에 비해 URI가 깔끔하다 - URI에 {} 안에 있는 값을 @PathVariable의 name 값을 일치 시켜준다. - null이나 공백값이 들어가는 parameter라면 적용하지 않는다. - 값에 . 이 포함되어 있으면 . 뒤로는 값이 잘려서 들어온다. 사용 예시 @RequestMapping(value = .. 2022. 2. 22.
Spring - @NotNull, @NotEmpty, @NotBlack 들어가며 API 개발시 요청 파라미터의 null 체크할시에 해당 어노테이션들이 유용하게 사용할 수 있다. 아니면 따로 null 체크를 하는 util 클래스를 만들어 사용하거나 아니면 if문 등을 통해 null 체크를 해야되는데 그렇게되면 별도의 오류 메시지를 만들거나 조건들에 따라 코드량이 증가할 수 있다. 그럼 해당 어노테이션에 대해 정리한다. @NotNull, @NotEmpty, @NotBlack 정리 및 차이점 @NotNull - Null만 허용하지 않는다. - ""(초기화 된 String) or " "(공백)은 허용한다. - 초기화나 공백의 값이 들어와 저장은 되야하지만 Null로 들어온 경우에는 오류가 나는 변수를 받을 때 사용한다. @NotEmpty - Null과 "" 둘 다 허용하지 않는다... 2022. 2. 13.
Spring - @ConfigurationPropertiesScan 어노테이션 들어가며 스프링 프레임워크로 개발을 하다 보면 프로퍼티(properties)파일에 저장된 특정한 설정 값들을 불러와 사용해야 하는 경우가 있다. 이때 @ConfigurationPropertiesScan을 이용하여 사용할 수 있다. 스프링부트 2.2 이전에는 @ConfigurationProperties를 이용해서 사용하였다. @ConfigurationProperties 한계점 @ConfigurationProperties을 사용하면 SpringBoot 메인 클래스에 @EnableConfigurationProperties를 추가하여 프로퍼티 클래스들이 늘어날때마다 해당 클래스들을 추가해줘야하는데 이때 해당 클래스들이 많아질 경우에 코드가 상당히 무거워지는 한계가 있다. 이러한 문제점을 해결하기 위해 @Conf.. 2022. 1. 19.
Spring - Transaction 정의와 Spring에서의 Transaction 들어가며 트랜잭션의 정의와 스프링에서의 트랜잭션의 사용방법에 대해서 정리한다. Transaction 먼저 트랜잭션이란 더 이상 쪼갤 수 없는 최소 작업 단위이다. 항상 그렇듯 이렇게 정의만 놓고 보면 정확히 감이 안오기 때문에 왜 트랜잭션이란 기능을 만들어 더 이상 쪼갤 수 없는 최소 작업 단위를 만들었는지 예를 통해 알아본다. 가장 대표적인 예인 은행에서의 송금의 과정을 봐보자. A라는 사람이 B에게 10만원을 입금했다. 하지만 그 중간과정에서 에러가 발생해서 A의 통장에서는 돈이 빠져나갔지만 B의 통장에는 돈이 입금되지 않은 상황이 발생했다. 바로 이러한 상황을 막기 위해 만들어진 것읻 트랜잭션의 개념이다. 개발 상황에서의 Transaction 개발을 하다보면 단일 쿼리 한줄로는 해결할 수 없는 로직.. 2021. 12. 8.
Spring Security를 이용한 회원 로그인 구현과 동작 원리 정리 (+SecurityFilterChain 기능 정리 ) 들어가며 어드민 페이지를 만들때 권한에 따라서 볼 수 있는 페이지와 볼 수 없는 페이지 또는 동작 등을 관리할 수 있다. 그렇기 때문에 현재 만들고 있는 어드민 페이지에 Spring Security를 이용하여 해당 기능을 적용해서 구현을 하기전 기본적인 동작원리와 간단하게 한 사이클을 돌 수 있는 demo page를 만든 것을 정리한다. 여기서는 따로 전체 코드를 기술하지는 않고 깃헙 링크로 대체하며, Spring Security의 기본 동적과정과 정의 등의 집중해서 정리한다. SpringSecurity를 딥하게 들어가면 워낙 양이 방대하므로 로그인 인증과정에 한하며 전체 사이클과 로직에 대해서 정리하도록 한다. 추가로 FilterChain에 속해있는 객체들의 역할에 대해서도 정리한다. 인증과 권한 스프.. 2021. 11. 19.