
지난 글에서 SSE 란 무엇인지에 대해 알아보았다. 개념과 실전은 다르다고, 이번 글에서는 직접 스프링에서 SSE를 구현해보고 내가 겪은 트러블 슈팅과, 약간의 의문점?들을 해결해나간 과정을 정리해보려고 한다. 거두절미하고 시작해보자. SseEmitter를 이용한 SSE 구현스프링 4.2부터는 SSE 통신을 지원하는 SseEmitter API를 제공하여 보다 쉽게 SSE를 구현할 수 있다. 뒤에서 보겠지만 클라이언트 - 서버 간 SSE 연결 시 SseEmitter 객체를 하나 생성하고 이 객체를 통해 서버 → 클라이언트로 이벤트를 전송할 수 있다. 아래는 서버가 클라이언트에게 전송하는 메시지 내용인 Notification 엔티티로, 간단하게 id, message 필드 그리고 수신자를 의미하는 User 엔..

웹 서비스를 사용하다 보면 화면이 깜빡이지 않아도(클라이언트가 자체적으로 새로고침하지 않아도) 웹 페이지가 자동 업데이트되는 경우를 볼 수 있다. 유트브에서 영상 시청 중 다른 사람이 좋아요 버튼을 눌렀음에도 좋아요 수가 내 화면에 실시간으로 반영된다거나, 내가 구독한 뉴스 피드가 업로드된 경우 나에게 바로 알림이 오는 경우를 예로 들 수 있다. 사실 HTTP 프로토콜 기반의 웹 어플리케이션에서는 클라이언트의 요청이 있어야 서버의 응답이 가능하다. 하지만 앞선 경우는 클라이언트의 요청 없이도 서버로부터 데이터가 전달된 것이다. 이렇게 뉴스 피드 또는 댓글 알림 등 실시간으로 서버의 변경 사항을 클라이언트에게 전달해줘야 하는 경우, 이를 구현하기 위한 클라이언트 - 서버 간 실시간 소통 방법에는 여러가지가..

지난 글에서 스프링 시큐리티의 전반적인 필터 구조 및 흐름을 살펴봤다. 이번 글에서는 스프링 시큐리티가 기본적으로 제공하는 DefaultSercurityFilterChain(일련의 시큐리티 관련 작업을 수행하는 필터들의 묶음) 내 필터들의 종류와 각 필터의 역할에 대해 간단히? 알아보고, 해당 필터들을 기반으로 커스텀 필터를 생성하고 등록해보자. 스프링 시큐리티의 DefaultSecurityFilterChain스프링 시큐리티의 필터 구조는 DelegatingFilterChain → FilterChainProxy → SecurityFilterChain → List 순으로 구조화되어 있다고 했다. 참고 이때 스프링 시큐리티가 기본적으로 제공하는 DefaultSecurityFilterChain(Securit..

지인짜 오랜만에 블로그 글을 쓴다. 마지막 글을 쓴지 거진 4개월이 지났는데... 그동안 바빴다면 바빴고, '이번 주말에는 그동안 공부했던 것 정리해서 글 좀 써야지' 결심했던 것들을 미루고 미루다가 지금이 되었다... 암튼 이제 조금 여유가 생겨서 그동안 공부했던 것들을 조금씩 정리할 것이다. 회사에서는 데이터 접근 기술로 JPA가 아닌 MyBatis를 사용하고 있다. 딱히 불만은 없고 오히려 SQL에 더 친숙해지고 쿼리 튜닝도 접할 기회가 많아 좋기도 하지만, JPA를 더 공부하고 싶어서 학교 창업 동아리 소속으로 진행하고 있는 사이드 프로젝트에서는 JPA를 사용하고 있다. 역시 책으로 공부하는 것보다 프로젝트를 진행해보니, 처음 보는 문제를 맞닥뜨리면서 새롭게 알게 되는 것들이 있다. JPA 그래도..
- Total
- Today
- Yesterday
- github
- Gitflow
- junit5
- C++
- ParameterizedTest
- vscode
- rest api
- Assertions
- mockito
- JPA
- 모두의 리눅스
- spring
- Linux
- Front Controller
- QueryDSL
- Java
- 전략 패턴
- Git
- FrontController
- facade 패턴
- 단위 테스트
- servlet filter
- 템플릿 콜백 패턴
- 서블릿 컨테이너
- SSE
- 디자인 패턴
- spring boot
- Transaction
- spring aop
- Spring Security
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |