Groovy 3

Spring의 ConcurrentWebSocketSessionDecorator 소개

스프링 부트에서 단순히 웹소켓을 사용하는 건 어렵지 않다. 스프링 부트 3.4.3 기준으로 기본 설정된 서블릿 컨테이너는 임베디드 톰캣이고, 모든 TCP 처리는 서블릿 컨테이너에서 처리한다. 이 글에서는 스프링 부트에서 웹소켓을 사용할 때 멀티스레드가 하나의 세션에 동시에 메시지를 전송할 때 발생하는 문제를 확인하고 대응하는 한 가지 방법을 소개한다. 여기서 사용하는 예제는 나의 온라인 강의의 파트 2-챕터 2 'Rest API와 WebSocket의 기본’ 중에서 '08. 채팅 프로젝트를 그룹 메시지로 확장하기’에 있는 코드에서 웹소켓에 대한 처리와 테스트 코드를 가져왔다.이 예제는 Java 17에 Spring Boot 3.4를 사용하고, 통합 테스트 구성은 Groovy 4.0에 Spock 2.4를 사..

Dev 2025.04.28

IntelliJ의 Groovy Console 소개

오래전에 'IntelliJ 의 JShell Console 을 활용하자’ 라는 포스팅을 했다.이번에는 'IntelliJ의 Groovy Console’을 소개한다. 이 글은 Java 환경에서 JShell 대신 Groovy Console 사용하는 방법을 설명한다. 이 내용은 제 온라인 강의에서 파트 2-챕터 1 '테스트에 대한 이야기’에 있는 '04. Groovy Console 소개’와 ’05. Spock 사용을 위한 Groovy 기본 문법’ 2개의 영상에 있는 내용 중에서 'Groovy 기본 문법’에 대한 내용은 제외하고 'Groovy Console'에 대해서 일부 글로 정리한 것으로, Groovy Console에서 자바 문법을 사용하여 진행하므로 Groovy를 몰라도 무방하다.이 글의 말미에 Java의 L..

Dev 2025.03.04

자바 직렬화(Java Object Serialization)에 유연성 더하기

자바 객체를 영속화하는 방법의 하나로 자바 직렬화를 사용할 수 있다. 단순하게는 Serializable 인터페이스를 구현하거나 더 확장성 있는 방법으로는 Externalizable 인터페이스를 구현하는 것을 선택할 수 있고, 자바 직렬화에 종속되지 않는 다른 방법을 선택할 수도 있다. 일단, Serializable 인터페이스를 구현한 클래스의 인스턴스가 외부 저장소에 영속화되면 호환성을 유지하면서 해당 클래스의 필드를 수정하기는 어렵다. (https://docs.oracle.com/en/java/javase/11/docs/specs/serialization/version.html) Serializable 대신 Externalizable 인터페이스를 구현하면 객체 직렬화 단계에서 객체 스트림에 읽고 쓰는 ..

Dev 2021.12.11
반응형