스프링부트52 spring boot JMS activemq connection factory Spring Boot 에서 제공하는 JMS activemq의 autoconfiguration에 의해서 사용되는 ConnectionFactory의 유형과 설정에 대해서 기록한다. JmsPoolConnectionFactory connection pool을 지원하는 connection factory 이다. JmsPoolConnectionFactory를 사용하기 위해서는 아래 조건이 충족되어야 한다. org.messaginghub:pooled-jms 디펜던시 추가가 필요하다. 해당 아티팩트에 JmsPoolConnectionFactory 구현체가 있다. spring.activemq.pool.enabled: true 가 설정되어야 한다. CachingConnectionFactory SingleConnectionFa.. 스프링부트 2023. 9. 28. Spring Boot AutoConfiguration 간단 모듈 만들어보기 Spring Boot AutoConfiguration은 여러 디펜던시 들의 Configuration을 자동으로 수행하여 복잡한 Configuration 구성 없이 필요한 빈을 자동으로 주입 받을 수 있도록 도와주는 기능이다. 이번 포스팅에서는 Spring Boot AutoConfiguration이 동작하는 간단한 예제 코드를 작성해 보겠다. AutoConfiguration class AutoConfiguration을 구현하는 클래스는 @AutoConfiguration 어노테이션이 지정 된다. 또한 여러 @Conditional 어노테이션을 통해서 AutoConfiguration이 적용되어야 하는 필터를 설정할 수 있다. 일반적으로 AutoConfiguration 클래스는 @ConditionalOnClass.. 스프링부트 2023. 9. 24. spring boot actuator health endpoints delay check spring boot actuator의 health check는 해당 서비스의 라이브 상태만을 체크 하는 것이 아니라 해당 서비스가 사용하고 있는 각종 endpoint들의 라이브 상태도 체크를 한다. 여기서 endpoint라는 것은 해당 서비스가 사용하고 있는 DB, Kafka, Redis, JMS와 같은 외부 인프라 서비스를 의미한다. 간혹 health check 수행 시간에 지연이 발생 하는 경우 어떤 endpoint에서 지연이 발생 하는지 확인이 필요한 경우가 있다. 이번 포스팅에서는 health check 대상 endpoint의 health check 수행 시간을 로그에 기록하도록 설정하는 방법에 대해서 기록한다. HealthContributer (HealthIndicator) spring boo.. 스프링부트 2023. 9. 22. spring boot websocket (웹소켓) websocket 프로토콜인 RFC 6455는 단일 TCP 연결을 통해 클라이언트와 서버 간에 양방향 통신 채널을 구축하는 표준화된 방법을 제공한다. websocket 프로토콜은 HTTP와는 다른 TCP 프로토콜이지만 포트 80과 443을 사용하고 기존 방화벽 규칙을 재사용할 수 있도록 설계되어 HTTP에서 작동하도록 설계 되었다. 가장 대표적인 사용은 웹채팅으로써 HTTP 상에서 상호 데이터를 주고 받는데 사용된다. 이번 포스팅 에서는 spring framework 공식 문서의 websocket 관련 내용을 정리하고 spring boot에서 websocket을 사용하기 위한 구성 및 방법을 기록한다. Upgrade Header websocket 상호작용은 HTTP 요청에 업그레이드 헤더를 사용하여 We.. 스프링부트 2023. 9. 20. spring boot application startup tracking spring boot 애플리케이션을 시작하는 동안 SpringApplication과 ApplicationContext는 애플리케이션 라이프사이클, 빈 라이프사이클, 애플리케이션 이벤트 처리와 관련된 많은 작업을 수행한다. Spring은 ApplicationStartup을 통해서 StartupStep 객체를 사용하여 애플리케이션 시작 과정을 추적할 수 있다. 추적 데이터는 프로파일링 목적으로 수집하거나 애플리케이션 시작 프로세스를 이해하는데 도움이 될 수 있다. spring boot 애플리케이션 시작 과정에 대한 추적 데이터를 얻는 방법에 대해서 기록한다. Spring Boot 2.4부터 ApplicationStartup 메트릭을 생성할 수 있게 되었다. 해당 메트릭에는 시작 과정에서 생성되는 각각의 이벤.. 스프링부트 2023. 9. 17. Spring boot embedded server 의 default 포트 변경 기본적으로 Spring Boot 애플리케이션은 임베디드 톰캣 서버의 포트 8080으로 동작한다. Spring Boot의 기본 임베디드 서버 포트를 다른 포트로 변경할 수 있는 몇 가지 방법에 대해서 기록한다. 포트 충돌 방지를 위해서 임의의 사용 가능한 포트를 사용하려면 server.port=0으로 설정한다. 방법 1) properties(. yml) 파일에서 기본 포트 변경 Spring Boot에서 기본적으로 참조하는 application.yml(.properties) 파일 설정으로 기본 포트를 변경할 수 있다. # application.properties server.port=9090 # application.yml server: port:9090 방법 2) 코드상에서 기본 포트 변경 코드상에서는 기.. 스프링부트 2023. 9. 16. Spring에서 Jasypt를 이용하여 설정 정보 암호화 하기 Spring의 application.yml(.properties)과 같은 설정 정보 파일에는 데이터 베이스 연결 정보나 API 키, 비밀번호와 같은 민감한 정보를 설정해야 하는 경우가 있다. 이러한 민감한 정보를 평문으로 설정하게 되면 간혹 정보가 노출되었을 때 심각한 문제를 초래 할 수 있다. Jasypt 라이브러리를 사용하여 어플리케이션의 설정 정보를 암호화하여 민감한 정보를 보호할 수 있다. 간단한 예제 코드와 함께 spring에서 Jasypt 라이브러리를 사용하는 방법에 대해서 기록한다. Jasypt for Spring boot Jasypt는 Spring boot 2.X 버전과 3.X 버전과 통합을 지원한다. 상세한 문서는 jasypt-spring-boot git을 참고하면 도움이 된다. 프로젝트.. 스프링부트 2023. 9. 9. Spring SSE (Server Sent Event) 사용 방법 SSE (Server Sent Event)는 웹 어플리케이션에서 실시간 업데이트를 제공하는 데 사용되는 웹 기술 중 하나이다. Spring에서는 Spring MVC에서 사용되는 SseEmitter 클래스를 제공하여 손쉽게 SSE 스트림을 생성하고 클라이언트에게 이벤트를 푸시할 수 있도록 한다. 이를 통해 클라이언트가 연결을 유지하면서 서버로부터 데이터를 지속적으로 수신할 수 있도록 한다. 이번 포스팅에서는 Spring에서 SSE를 사용하는 방법에 대해서 기록한다. SSE (Server Sent Event) 특징 서버 -> 클라이언트 단방향으로 이벤트를 스트리밍 할 수 있도록 대부분의 브라우저에서 채택한 사양 이벤트 데이터는 UTF-8로 인코딩된 텍스트 데이터 스트림 이벤트 데이터 형식은 줄 바꿈으로 구분.. 스프링부트 2023. 9. 9. Spring Boot GraalVM Native Image 빌드 하기 GraalVM 네이티브 이미지는 컴파일된 자바 애플리케이션을 미치 처리하여 생성할 수 있는 독립 실행형 실행 파일이다. 도커 이미지와 같은 이미지를 의미하는 것이 아니다. 네이티브 이미지는 일반적으로 메모리 사용 공간이 더 작고 JVM 이미지 보다 빠르게 시작할 수 있다는 장점이 있다. 컨테이너 이미지를 사용하여 배포하는 애플리케이션에 적합하며, 특히 서비스형 기능(FaaS) 플랫폼과 결합할 때 유용하다. GraalVM 네이티브 이미지는 완전한 플랫폼별 실행파일이다. 이번 포스팅에서는 Spring Boot 의 GraalVM 네이티브 이미지 빌드를 위해서 지원되는 사항에 대한 공식 문서를 정리하고자 한다. JVM 배포와 차이점 애플리케이션의 정적 분석은 메인 엔트리 포인트에서 빌드 시 수행된다. 네이티브 .. 스프링부트 2023. 9. 4. spring boot resource 파일 access spring boot 에서 resource 디렉토리에 있는 모든 파일은 빌드 시 application root 에 복사 됩니다. 이번 포스팅에서는 spring boot 에서 resource 파일을 access 하는 3가지 방법을 소개합니다. ResourceLoader ClassPathResource 생성자 @Value annotation 샘플 코드는 test 코드이며 test 디렉토리의 resource 에 있는 샘플 파일 경로는 아래 이미지와 같습니다. ResourceLoader Spring boot 에서 ResourceLoader 는 자동 주입됩니다. ResourceLoader를 통해서 resource 파일을 로딩 하는 경우에는 getResource() 메소드에 넘겨주는 파라미터에 prefix 를 붙여.. 스프링부트 2023. 8. 27. spring-boot-starter-parent 와 spring-boot-dependencies Spring Boot는 최소한의 구성 작업으로 프로덕션에 바로 사용할 수 있는 Spring 애플리케이션을 빌드하는 프로세스를 간소화하도록 설계되었다. 이를 위해 Spring Boot 기반 애플리케이션에 대한 기본 구성 및 종속성을 제공하는 특별한 상위 프로젝트인 spring-boot-starter-parent 가 만들어졌다. spring-boot-starter-parent 에 지정된 종속성을 통해서 기본적으로 제공되는 여러 종속성들을 간편하게 사용할 수 있다. spring-boot-starter-parent 관련 내용은 아래 링크에서 확인해 볼 수 있다. https://central.sonatype.com/artifact/org.springframework.boot/spring-boot-starter-p.. 스프링부트 2023. 8. 15. spring boot 필드값 조건별 validation 하기 - json subtype 앞선 포스팅에서는 custom annotation 을 만들어서 조건별 validation 을 적용하는 방법을 알아보았다. 이번 포스팅에서는 @JsonTypeInfo 와 @JsonSubTypes 어노테이션을 이용하여 조건별 validation 을 적용하는 방법을 기록한다. @JsonTypeInfo 와 @JsonSubTypes 는 특정 필드의 값에 따라서 Serialization, Deserialization 을 수행하는 클래스를 별도로 정의할 수 있다는 점에서 조건별로 validation 을 처리하는데 이용할 수 있을듯 하여 샘플을 만들어 보았다. 코드 구현 야구선수 등록 API 가 있고 야구선수 등록 데이터에는 uid, 이름, 선수타입, 타율, 홈런수, 방어율, 다승수 데이터가 있다. 선수타입에는 타자,.. 스프링부트 2023. 7. 29. 이전 1 2 3 4 5 다음 💲 추천 글