일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Spring
- MSA
- java
- gatway
- 정규화
- 비관적 락
- 네트워크
- AWS
- DB
- ocp
- 자바
- 삽입 이상
- 삭제 이상
- Kotlin
- Kafka
- JPA
- 데이터베이스
- Redis
- 3-way handshaking
- 스레드 풀
- 페이지네이션
- null
- 캐시 오염
- 갱신 이상
- 낙관적 락
- well-know port
- buildSrc
- 자료구조
- Dirty Checking
- HTTP
- Today
- Total
728x90
목록
728x90
Spring (16)
어 나 갱수.
Spring으로 개발을 하다 보면 다양한 Exception을 처리하게 됩니다. 에러를 처리하는 방법은 매우 다양합니다. 저는 그 방법들 중에 반복적인 작업을 줄이고 전역에서 공통적으로 Exception을 처리할 수 있는 @ExceptionHandler와 @ControllerAdvice를 사용하여 에러를 처리해 보겠습니다. @ExceptionHandler 예외 처리컨트롤러 코드에서 @ExceptionHandler 어노테이션을 선언하고, 해당 컨트롤러에서 캐시 하고 싶은 예외를 지정하면 됩니다.해당 컨트롤러에서 지정한 예외가 발생하면 예외에 일치하는 메서드가 실행됩니다.아래 코드로 예시를 들어보겠습니다. 아래 코드에서는 회원가입 API에 대한 컨트롤러 코드가 있습니다. 회원가입 API를 요청하는 도중에 Me..
Pagination이란Pagination이란 검색 결과를 조회할 때 데이터를 한 번에 다 가져오는 것이 아니라 나눠서 일부만 조회하는 방법입니다. Pagination은 게시판이나 상품 목록 조회등을 요청할 때 결과값이 총 1억 개가 있다고 가정하면, 사용자는 이 데이터 1억 개를 모두 보지도 않는데 1억 개의 데이터를 조회해야 합니다. 그렇게 매번 전체의 리스트를 조회하게 되면 조회 속도도 느려지고 성능도 안 좋아지게 될 수 있습니다. 하지만 데이터를 일정한 크기로 나눠서 규칙적으로 조회한다면 조회 속도도 빠르고 성능적으로도 좋은 애플리케이션이 될 수 있습니다.Pagination을 구현하는 방법은 크게 2가지가 있습니다.offset-based pagination말 그대로 페이지를 기반으로 데이터를 나눠서..
H2 Console이 Spring Security 필터를 통과할 때, 아래 사진과 같이 localhost에서 연결을 거부한다는 에러가 발생합니다. H2 콘솔은 iframe을 통해 화면을 구성합니다. 브라우저에서 iframe에 대한 모든 요청을 허용하면 디도스 공격, 클릭재킹 공격에 취약해질 수 있습니다. 따라서 브라우저는 요청 응답에 있는 X-Frame-Options 헤더의 내용에 따라 iframe에서의 요청을 허용할 것인지 허용하지 않을 것인지 판단합니다.Spring Security는 기본적으로 X-Frame-Options 응답헤더를 DENY 로 설정하고 있습니다. 따라서 모든 브라우저는 이나 태그로 페이지를 표시하는 부분을 볼 수 없다는 것입니다. 아래와 같이 SecurityConfig에 head..
오늘은 클린 아키텍처에 대해 알아보겠습니다. 평소에 듣기로는 "유지보수에 편리한 아키텍처", "테스트하기 편리한 아키텍처" 정도로만 알고 있습니다. 오늘은 좀 더 자세히 알아보겠습니다. Clean Architecture'추상화 개념'으로써 관심사를 분리시키고 의존도를 낮추는 것에 목적을 둔 아키텍처입니다. 클린 아키텍처는 각 요소들을 분리하고 변화에 유연하게 대처할 수 있는 아키텍처 설계입니다.클린 아키텍처를 적용함으로써 개발자는 비즈니스 로직과 외부 요인과의 결함도를 낮춤으로써, 테스트에 편리하고 유지보수에 효율적인아키텍처를 구축할 수 있습니다. 이 요인은 장기적으로 봤을 때 애플리케이션의 유지보수 비용을 줄임과 동시에, 품질을 향상할 수 있습니다. 사용하는 이유소스코드를 변경할 때 안정성이 높아집니다..
AOPAOP에 대해 먼저 알아보자면 관전 지향 프로그래밍이라는 뜻으로, 코드를 핵심 기능과 공통 기능으로 나눈 후에 핵심 기능에서 따로 빼놓은 공통 기능을 불러와 적용하는 방법입니다.로깅 작업프로젝트를 하면서 로그를 찍는 거는 아주 중요한 역할입니다. 로그는 에러가 난 이유를 찾거나 값을 확인하는데 중요한 역할을 합니다.위의 코드와 같이 Controller 코드에 로그를 추가할 수 있습니다. 하지만 위와 같이 Controller method마다 로그를 찍으면 문제가 생깁니다.중복된 코드 증가(모든 controller 메서드에 로그를 추가해야 한다.)실수로 로그를 찍지 않으면 로그가 찍히지 않는다.그래서 위와 같은 상황에서 좀 더 효율적으로 하려면 핵심기능(회원가입)과 공통기능(로깅 작업)을 분리해서 작업..
문제 배경msa 프로젝트를 진행하면서 Spring Cloud API Gateway를 통해 /member/signup 요청을 보내려고 했으나 아래와 같은 에러가 발생하였습니다.Spring Cloud Gateway를 사용하여 마이크로서비스 간의 요청 경로를 설정할 때, /member/signup으로 POST 요청을 보냈으나, 예상과 달리 404 NOT_FOUND "No static resource signup." 오류가 발생했습니다. 이는 요청이 user-sevice의 signUp 메소드로 제대로 라우팅되지 않았음을 의미합니다. 문제 분석문제의 원인은 Spring Cloud Gateway에서 application.yml의 RewritePath 필터 설정에 있었습니다. 처음에 application.yml의 설..
SpringWebflux 환경에서 아래와 같이 SecurityConfig 클래스를 생성하였습니다.@Configuration@EnableWebFluxSecurityclass SecurityConfig { @Bean fun passwordEncoder() = BCryptPasswordEncoder() @Bean protected fun filterChain(http: ServerHttpSecurity): SecurityWebFilterChain { return http .httpBasic().disable() .formLogin().disable() .csrf().disable() .cors()...
ResponseEntity란스프링에서 제공하는 ResponseEntity는 개발자가 직접 반환 데이터와 상태코드를 제어할 수 있는 클래스입니다.ResponseEntity의 구조를 보면 HttpEntity의 상속을 받고 있고 Object타입의 status만 필드값으로 가지고 있습니다. ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다.따라서, HttpStatus, HttpHeader, HttpBody를 포함합니다.이 말은 ResponseEntity의 가장 큰 특징 중 하나인 상태코드를 직접 제어할 수 있다는 의미입니다.ResponseEntity 객체ResponseEntity : HTTP 응답을 만들기 위한 객체구조HTTP Bodypayload (실질적으로 ..