Spring Security는 필터를 기반으로 동작한다. 스프링 MVC에는 필터와 비슷한 개념인 인터셉터 라는 것이 존재하는데 이 둘의 차이점이 무엇인지 알아보자. 또한 스프링 MVC에서는 DispatcherServlet 이라는 것이 핵심적인 역할을 하는데, 이와 비슷하게 스프링 시큐리티에도 핵심 필터들이 존재한다. 해당 필터들은 무슨 역할을 하는지, 요청이 들어왔을 때 이를 처리하는 전체적인 플로우도 살펴보자. Filter vs Interceptor Java Servlet Filter vs Spring MVC HandlerInterceptor Servlet Filter 먼저 필터는 자바의 Servlet Filter를 지칭하는 것으로 즉 스프링 프레임워크에 속한 기술이 아닌 웹서버 기술(서블릿)에 속한다..
지금까지 자칭 'REST API'라는 것들을 구현해왔지만 REST API가 정확히 뭐야? 라고 질문한다면 제대로 답하지 못할 것이다. 그러던 와중 그런 REST API로 괜찮은가 라는 컨퍼런스 영상을 보게 되었다. 내가 지금까지 만들어온 API가 REST하지 않았다는 것을 깨닫게 되었다. REST API의 제약조건에는 다음 6가지가 있다. API가 HTTP 프로토콜을 따른다면 대부분의 제약조건을 만족시키지만 문제는 굵은 글씨로 표시한 uniform interface 라고 한다. client-server stateless cache uniform interface layered system code-on-demand (optional) uniform interface 또한 하나의 아키텍처 스타일로 다음의 ..
이전에는 API 요청에 대한 응답으로 단순히 데이터만을 전달해주었다. 그러나 한 프로젝트에서 모든 API 요청에 대해 공통의 응답 형식을 가지도록 개발해달라는 요청을 받았다. 예를 들어 이전에는 아래와 같이 응답 데이터를 전달한 반면 { "categoryList": [ { "categoryId": 1, "type": "FOOD" }, { "categoryId": 2, "type": "TRAFFIC" }, { "categoryId": 3, "type": "RESIDENCE" } ] } 이제는 실질적인 데이터는 data 필드로 감싸고, timestamp, status, code, message 등의 필드를 추가한 공통 응답 형식을 가지도록 개발하는 것이다. { "timestamp": "2024-01-14 1..
부모 엔티티 삭제 시 자식 엔티티를 어떻게 처리할지 따로 지정해주지 않으면, 다음과 같이 DB 상에서 FK 제약 조건을 위반했다는 오류를 뱉으면서 요청 처리에 실패하게 된다. 부모 엔티티를 삭제하는 경우 자식 엔티티를 어떻게 처리할지에 대해서는 구현하고자 하는 어플케이션의 비즈니스 로직에 따라 다를 것이다. 예를 들어 게시글을 삭제하는 경우 해당 글에 포함된 댓글 역시 모두 삭제해야 하는 반면, 어느 회사 내의 팀이 해체된다면 즉 팀이 삭제되는 경우에는 해당 팀에 속한 사원들의 정보는 삭제하지 않고 해당 사원의 소속팀 값을 NULL 또는 "무소속" 등과 같은 기본값으로 수정해주어야 한다. Spring Data JPA는 이렇게 부모 엔티티 삭제 시 자식 엔티티는 어떻게 처리할지에 대해 여러 옵션을 제공한다..
- Total
- Today
- Yesterday
- Git
- 단위 테스트
- spring aop
- ParameterizedTest
- 템플릿 콜백 패턴
- servlet filter
- Spring Security
- QueryDSL
- Gitflow
- 전략 패턴
- vscode
- 서블릿 컨테이너
- junit5
- spring boot
- mockito
- 모두의 리눅스
- Java
- Linux
- Transaction
- JPA
- Front Controller
- 디자인 패턴
- github
- FrontController
- C++
- spring
- rest api
- SSE
- Assertions
- facade 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |