공통 업무 처리 프로젝트 단위가 커질 수록 공통된 부분은 빼서 따로 관리하는 게 좋다. 공통 업무를 프로그램 흐름의 앞 , 중간 , 뒤에 추가하여 자동으로 추가할 수 있는 방법은 아래와 같다. 1) Filter 2) Interceptor 3) AOP Filter,
웹에서 사용되는 JSON 형식의 토큰에 대한 표준 규격클레임(Claim) 토큰 기반 인증사용자의 인증(authentication) 또는 인가(authorization) 정보를 서버와 클라이언트 간에 안전하게 주고 받기 위해서 사용된다.웹에서 보통 Authorizatio
AOP란? Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화한다. 핵심적인 관점은 핵심 비즈니스 로직을 의미한다.
트랙잭션 특징 원자성 (Atomicity) 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장한다. 트랜잭션이 DB에 모두 반영되거나 혹은 전혀 반영되지 않아야 한다. (All or Nothing) 일관성 (Consistency) 트랜잭션의 작업 처리
클라이언트가 전송하는 HTTP 요청 본문(JSON, XML 등)을 Java 객체로 변환하는 역할을 한다.@RequestBody로 받는 데이터는 Spring에서 관리하는 MessageConverter들 중 하나인 MappingJackson2HttpMessageConver
@ModelAttribute 바인딩 이해하기 (생성자와 setter 메서드)
Converter Formatter > 🔍 PropertyEditor는 스프링 초창기에 썼던 데이터 바인딩 인터페이스였지만 후에 이를 대체할 Converter와 Formatter란 데이터 바인딩 인터페이스가 나오게 되었다. 출처 [Spring Boot] Web
사내 프로젝트에서 사용하는 Jackson 어노테이션 정리
출처: https://veneas.tistory.com/entry/Spring-Boot-스프링-부트-인터셉터-적용-HandlerInterceptor > 💡 DispatcherServlet이란? 가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저
Bean 등록 방법 @Component 자동으로 스프링 컨테이너에 빈을 등록한다. 스프링의 컴포넌트 스캔 기능이 @Component 어노테이션이 있는 클래스를 자동으로 찾아서 빈으로 등록한다. @Component 하위 어노테이션으로 @Configuration, @C
HTTP 통신 방식 Spring Framework은 다양한 HTTP 요청 방식을 지원하여 웹 서비스와의 통신을 할 수 있다. 주요 HTTP 요청 방식에는 RestTemplate, WebClient 등이 있다. RestTemplate Spring Framework
클라이언트 사이드의 HTTP 에러를 만났을 때 던져지는 기본적인 예외 클래스HttpClientErrorException : 응답코드가 4xxHttpServerErrorException : 응답코드가 5xxI/O를 하는 도중 에러가 발생했을 때 ✅ instanceof 연
수동으로 스프링 컨테이너에 빈을 등록한다.애플리케이션 전범위적으로 사용되는 클래스나 다형성을 활용하여 여러 구현체를 빈으로 등록 할 때 사용된다.1개 이상의 @Bean을 제공하는 클래스의 경우, 반드시 @Configuration을 명시해 주어야 싱글톤이 보장된다.web
Spring Security의 FilterChainProxy에 대하여 커스터마이징을 위해 사용된다.Spring Security가 정적자원에 대해서 인증을 하지 않도록 설정한다.PathRequest.toStaticResources().atCommonLocations()S
메소드별 권한 설정을 할 순 없을까? 🧐가계부 앱 관련 프로젝트를 진행하던 중, 카테고리 조회는 모든 계정이 카테고리 생성은 관리자 권한만 가능하게 하고 싶었다. 스프링 시큐리티 설정에서 엔드포인트별 권한 설정을 하는 방법만 알아서 .. 방법이 있나 찾아보던 중 Me
스프링 시큐리티 프레임워크 안에서 인증된 사용자의 세부 정보를 저장하는 클래스UsernamePasswordAuthenticationFilter와 같은 필터는 HTTP 요청에서 username과 password를 추출해 Authentication 타입 객체를 준비한다.P
Spring Security에서 권한 객체는 org.springframework.security.core.GrantedAuthority 인터페이스를 구현한 클래스 객체로 만든다.GrantedAuthority를 구현한 클래스 중 하나String 타입의 role 파라미터를
파라미터 유효성 검사 기능 개발 중, HttpMessageNotReadableException을 핸들링 하는 방법을 찾던 중 HandlerExceptionResolver을 구현하게 되었는데, 관련 내용을 정리해 두려고 한다. 1편은 예외처리와 오류 페이지 , 2편은 A
컨트롤러 밖으로 던져진 예외를 해결하고, 동작 방식을 변경하고 싶은 경우 HandlerExceptionResolver (줄여서 ExceptionResolver)를 사용한다.ExceptionResolver 적용 전컨트롤러에서 예외가 발생하였을 경우, 처리하지 못하고 WA
Exeption을 공통으로 처리하는 방법은 크게 두 가지가 있다. AbstractHandlerExceptionResolver 를 상속받아 ExceptionResolver를 구현@ControllerAdvice, @ExceptionHandler 어노테이션을 사용하여 Exc
_토이 프로젝트에서 HttpServletRequest에서 유저 정보를 추출하는 로직이 공통으로 필요한데 , 어떻게 처리하면 좋을지 찾아보다가 회사에선 HandlerMethodArgumentResolver를 사용하길래 관련된 내용들을 기록해 두고자 한다. 🤍 🫧
테스트를 위한 가짜 객체실제 객체를 만들기에는 비용과 시간, 의존성이 크게 걸쳐져 있어 테스트 시 제대로 구현하기 어려울 경우 만드는 가짜 객체Mock Object를 간편하게 만들게 해주는 라이브러리Mock 객체를 만들기 위해서 사용되는 시간을 줄이기 위해, 자동으로
여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 여부를 결정하는 것격리(고립) 수준이 높은 순서대로 SERIALIZABLE, REPEATABLE READ, READ COMMITTED, READ UN
트랜잭션 동작 도중 다른 트랜잭션을 호출하는 상황에 선택할 수 있는 옵션이다.Spring이 지원하는 전파 속성은 아래 7가지가 있다.REQUIRED, SUPPORTS, MANDATORY, REQUIRES_NEW, NOT_SUPPORTED, NEVER, NESTED🌱