분류 전체보기56 Stomp를 활용한 실시간 채팅 프로그램 구현 유저 간 소통을 할 수 있도록 실시간 채팅 구현을 해야 했었다. 채팅을 구현하거나 실시간성이 필요한 사이트의 경우 WebSocket 통신 프로토콜이 필요하다고 한다. 이번에 Spring에서 Websocket, STOMP를 이용하여 채팅 서버를 어떻게 구현해야 하는지 정리 해보자. 전체코드는 여기로 확인해주세요. 📚 목차 목차는 다음과 같다. HTTP 통신과 Socket 통신의 차이점 STOMP로 채팅서버 고도화하기 build.gradle에 라이브러리 추가 ChatPreHandler 생성 WebSocketConfig 생성 채팅 관련 Domain 설계 채팅창 Service 생성 채팅 Controller 생성 채팅창 Controller 생성 웹브라우저 확인 참고자료 회고 HTTP 통신과 Socket 통신의 차.. 2024. 3. 15. Spring Security와 JWT로 로그인 구현 팀프로젝트를 하게 되면서 새롭게 다루는 주제들이 많았었다. 그 중에서 Spring Security와 JWT를 활용하여 로그인을 구현하는 부분이 있었다. (여태 나는 세션과 쿠키 방식의 로그인을 구현했었다. 프로젝트를 해본 경험은 있었지만 JWT를 구현해보지는 않았었다.) 프로젝트를 진행하며 알게 된 내용과 함께, springboot 버전마다 달라진 jwt관련 변경 사항들을 공유하고자 한다. 모든 코드는 Github에 있으니 참고하세요.📚 목차목차는 다음과 같다.JWT(JSON Web Token) 소개build.gradle 라이브러리 추가spring security, JWT 구현Spring Boot 3.x 이상의 Security Config 코드 변경 사항REST API 구현 & POSTMAN 확인참고자.. 2024. 3. 13. [item 3] private 생성자나 열거 타입으로 싱글턴임을 보증하라 singleton이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 싱글톤의 전형적인 예로는 함수와 같은 무상태 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 그런데 클래스를 싱글톤으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다. 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글톤이 아니라면, 싱글톤 인스턴스를 가짜(mock) 구현으로 대체할 수 없기 때문이다. 싱글톤을 만드는 방식은 보통 둘 중 하나다. 두 방식 모두 생성자는 private으로 감춰두고, 유일한 인스턴스에 접근할 수 있는 수단으로 public static 멤버를 하나 마련해둔다. (이번 내용도 github에 정리되어 있으니 참고해주세요.) 싱글톤 (singleton) 싱글.. 2024. 1. 14. [item 2] 생성자에 매개변수가 많다면 빌더를 고려하라. 이번 시간에는 빌더패턴에 대해 정리해보자. 생성자나 정적 팩터리가 처리해야 할 매개변수가 많다면 빌더 패턴을 선택하는게 더 낫다. 매개변수 중 다수가 필수가 아니거나 같은 타입이면 특히 더 그렇다. 빌더는 점층적 생성자보다 클라이언트 코드를 읽고 쓰기가 훨씬 간결하고, 자바빈즈보다 훨씬 안전하다. (이번 내용도 github에 정리되어 있으니 참고해주세요.) 생성자에 매개변수가 많다면 빌더를 고려하라 생성자 경우 이런 코드는 작성하기도 어렵고 읽기도 어렵다. NutritionFacts cocaCola = new NutritionFacts(240, 8, 100, 0, 35, 27); 자바빈 경우 (우선) 생성자 경우보다 읽기 쉬운 코드가 되었다. NutritionFacts cocaCola = new Nutr.. 2024. 1. 14. 이전 1 2 3 4 5 6 7 8 ··· 14 다음