[Spring] Spring @Configuration 란?
·
Spring
안녕하세요. 절박한 개발잡니다. 오늘은 @Configuration에 대해 알아보고자 합니다. 바로 시작해보겠습니다. @Configuration란?스프링 IOC 컨테이너에게 빈 정의를 포함하는 클래스임을 선언하는 애터네이션입니다.기본적으로 CGLIB 프록시를 생성하여 빈 메서드 호출을 가로채 싱글턴을 보장합니다.@Configurationpublic class AppConfig { @Bean public Engine engine() { System.out.println("엔진 생성!"); return new Engine(); } @Bean public Car car1() { return new Car(engine()); // en..
[KAFKA] Spring Boot로 KAFKA 사용해보기
·
Spring
안녕하세요, 절박한 개발자입니다. 이번 글에서는 카프카(Kafka)를 Spring Boot 프로젝트에서 어떻게 사용하는지 간단히 기록해두려고 합니다. 가독성이 떨어질 수 있으니 양해 부탁드립니다.이번 글을 통해 카프카를 Spring Boot와 함께 사용하는 방법을 공유하고자 합니다.  카프카 With Spring BootSpring Boot에서 카프카를 사용하기 위해선 spring-kafka 의존성을 프로젝트에 추가해야 합니다. build.gradle 또는 pom.xml 파일에 아래와 같이 의존성을 추가해 주세요. implementation 'org.springframework.kafka:spring-kafka' testImplementation 'org.springframework.kafka:sprin..
[해결 방안] Spring STOMP content-length 초과 에러 해결하기
·
Spring
Spring WebSocket을 사용하면서 이미지를 같이 받으려고 할때 아마 다음과 같은 에러를 만나볼 수 있습니다.org.springframework.messaging.simp.stomp.StompConversionException: STOMP 'content-length' header value 115859 exceeds configured buffer size limit 65536저도 최근에 STOMP 메시지 전송 중 위와 같은 에러를 마주쳤습니다. 메시지 크기가 너무 커서 내부 버퍼 사이즈 제한을 초과한 경우 발생하는 문제입니다. 로그를 자세히 보면 content-length가 115,859인데, 설정된 버퍼 크기는 65,536이라 초과된 것 상황입니다. 그렇다면 설정된 버퍼크기를 충분히 늘려주면..
[해결 방안] Spring Gateway를 통해 Stomp를 설정했을때 헤더가 두개오는 문제 해결방안
·
Spring
MSA 아키텍처에서 WebSocket을 활용해 서버와 통신할 때, Spring Cloud Gateway를 거쳐 Stomp 연결을 시도하면 다음과 같은 문제가 발생할 수 있습니다.❗CORS 관련 에러가 발생하며, 응답 헤더에 동일한 값의 헤더가 중복으로 포함되는 현상Gateway 설정 대부분 아래와 같이 application.yml에 Gateway 설정을 하고 있을 겁니다.spring: cloud: gateway: globalcors: corsConfigurations: '[/**]': allowedOrigins: "*" allowedMethods: - GET - POST ..
[Spring] MongoDB와 JPA Repository 충돌 해결
·
Spring
문제 상황프로젝트를 진행하는 도중 다음과 같은 오류가 발생했다.Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.APPLICATION FAILED TO STARTDescription:The bean 'mongoMessageRepository', defined in com.dancing_orangutan.ukkikki.chat.infrastructure.MongoMessageRepository defined in @EnableMongoRepositories declared on MongoRepositoriesRegistrar.EnableM..
[개선사항] Spring Events을 활용하여 결합도 낮추기
·
Spring
먼저, 이 글에서는 Spring Events를 활용한 코드 리팩터링을 다룹니다. 하지만 Spring Events가 익숙하지 않은 분들은 아래 링크를 통해 기본 개념을 먼저 확인하시면 이해에 도움이 될 것입니다: ➡️ Spring Events란? - Gahacman의 블로그 저의 코드는 크롤링중에 새로운 기사가 크롤링 된다면 알림서비스로 새로운 기사가 발행되었다고 알림을 보냅니다.이후 데이터베이스에 새로운 기사들을 저장합니다.기존의 코드의 문제점package com.hnptech.stocknewscuckoo.article.service;import com.hnptech.stocknewscuckoo.article.dto.response.ArticleResponse;import com.hnptech.stock..
[Spring] Spring Events 이란?
·
Spring
이벤트란 무엇인가?Spring 프레임워크에서 이벤트는 ApplicationContext가 제공하는 기능 중 하나로, 특정 상황에서 이벤트를 발행(publish)하고 이를 처리할 수 있도록 지원합니다. 이 기능은 크게 아래 세 가지로 구성됩니다.이벤트(Event)발행자(Publisher)리스너(Listener)1. Event (이벤트)Spring은 사용자 정의 이벤트를 생성하고 발행할 수 있도록 지원합니다. 기본적으로 이러한 이벤트는 동기식으로 동작합니다.public class CustomSpringEvent extends ApplicationEvent { private String message; public CustomSpringEvent(Object source, String message..