- STOMP와 ACTIVEMQ를 이용한 메시지 broadcasting알쓸개잡STOMP(Simple Text Oriented Messaging Protocol)은 중개 서버를 통해 클라이언트 간에 비동기 메시지를 전달하기 위해서 설계된 간단한 상호 운용 프로토콜이다. 이 프로토콜은 클라이언트와 서버 간에 전달되는 메시지에 대한 텍스트 기반 형식을 정의한다. STOMP는 활발히 사용되어 왔으며 많은 메시지 브로커와 클라이언트 라이브러리에서 지원되고 있다. STOMP는 TCP 및 웹소켓과 같은 신뢰할 수 있는 양방향 스트리밍 네트워크 프로토콜을 통해서 사용할 수 있다. ActiveMQ는 대표적인 메시지 브로커이고 STOMP를 지원한다. 이번 포스팅에서는 spring boot에서 STOMP와 ActiveMQ를 이용하여 메시지 broadcasting 하는 방법에 대해서 기록한다. Act..
- 2023-10-11 19:58:01
- spring boot scheduler basic알쓸개잡Spring은 주기적인 작업을 자동으로 수행할 수 있도록 하는 scheduler를 제공하여 이를 간소화할 수 있다.Spring framework는 메서드 scheduling에 대한 지원을 제공한다. @Scheduled annotation을 사용하여 메서드를 예약된 메서드로 손쉽게 변환할 수 있다.@Scheduled annotation은 메서드 수준 annotation이며 Spring Bean 클래스의 메서드에 추가해야 한다.@Scheduled annotation 매개 변수를 제공하여 고정된 주기로 실행할지 또는 특정 시간 및 날짜에 실행할지 지정할 수 있다.이번 포스팅에서는 spring boot의 scheduler를 사용하는 방법과 properties에 대해서 기록한다. spring boot schedu..
- 2023-10-09 22:05:29
- spring boot kafka 연동하기알쓸개잡Spring에서 kafka 연동은 Apache kafka의 spring-kafka 프로젝트의 auto configuration 제공을 통해서 지원된다. kafka 설정은 spring.kafka.*의 외부 구성 속성에 의해서 설정할 수 있다. 이번 포스팅에서는 kafka messeage 송수신을 위한 auto configuration에 대해서 기록한다. dependencyspring boot에서 kafka를 사용하기 위해서 필요한 dependency는 아래와 같다. org.springframework.boot spring-boot-starter-parent 3.1.4 ... org.springframework.boot spring-boot-starter ..
- 2023-10-08 22:01:04
- spring bean scope알쓸개잡Spring framework에서 중요한 개념 중 하나로 Bean의 scope를 설정하여 객체의 생성과 사용에 대한 제어를 할 수 있다. Spring에서 제공하는 Bean scope의 5가지 유형에 대해서 기록한다. Spring Bean Scope Singleton (default) Prototype Request Session Application 5가지 scope 유형 중에서 Singleton과 Prototype은 표준 범위라고 하며 ApplicationContext에서 사용할 수 있다. Requst, Session, Application 유형은 웹 기반 애플리케이션에서만 사용할 수 있다. Singleton Scope 단 하나의 인스턴스만 생성할 수 있는 클래스는 singleton 이다. 애플리케이션..
- 2023-10-03 18:54:41
- application events and listeners알쓸개잡Spring framework는 애플리케이션 기동시 ContextRefreshedEvent 외에도 몇 가지 추가적인 이벤트를 전송한다. 이번 포스팅에서는 애플리케이션 기동시 발생하는 events와 이에 대한 listeners에 대해서 기록한다. 일부 event는 ApplicationContext가 생성되기 전에 발생하므로 해당 event에 대한 리스너를 @Bean으로 등록할 수 없다. ApplicationContext가 생성되기 전에 발생하는 event listener를 등록하려면 SpringApplication.addListeners(...) 메서드 또는 SpringApplicationBuilder.listeners(...) 메서드를 이용하여 등록할 수 있다. 애플리케이션이 생성되는 방식에 관계없이 해..
- 2023-10-02 22:34:33
- 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-09-28 02:42:59
- java generic class알쓸개잡java generic은 java 프로그래밍에서 매우 중요한 개념 중 하나로 generic을 사용하여 타입 안정성을 높이고 재사용성을 개선할 수 있다. 이번 포스팅에서는 java generic의 개념과 활용 방법에 대해서 기록한다. Generic 코드 사용의 이점 java 컴파일시 더 강력한 유형 검사를 수행한다. java 컴파일러는 일반 코드에 엄격한 타입 검사를 적용하고 코드가 타입 안전성을 위반하는 경우 컴파일 오류를 발생시켜 런타임 이전에 문제를 찾을 수 있다. 타입을 명확히 지정하여 형변환을 제거할 수 있다. //uses unchecked or unsafe operations. 경고가 발생한다. List list = new ArrayList(); list.add("hello"); String s..
- 2023-09-24 19:51:29
- Spring Boot AutoConfiguration 간단 모듈 만들어보기알쓸개잡Spring Boot AutoConfiguration은 여러 디펜던시 들의 Configuration을 자동으로 수행하여 복잡한 Configuration 구성 없이 필요한 빈을 자동으로 주입 받을 수 있도록 도와주는 기능이다. 이번 포스팅에서는 Spring Boot AutoConfiguration이 동작하는 간단한 예제 코드를 작성해 보겠다. AutoConfiguration class AutoConfiguration을 구현하는 클래스는 @AutoConfiguration 어노테이션이 지정 된다. 또한 여러 @Conditional 어노테이션을 통해서 AutoConfiguration이 적용되어야 하는 필터를 설정할 수 있다. 일반적으로 AutoConfiguration 클래스는 @ConditionalOnClass..
- 2023-09-24 02:12:39
- 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-09-22 13:57:51
- 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-09-20 00:15:21
- 테스트 환경을 위한 mariadb, kafka docker compose알쓸개잡로컬에서 테스트 환경 구성을 위한 mariadb, kafka docker compose다. docker 엔진이 설치되어 있어야 하며 macOS(arm64) 환경에서는 이상 없이 동작하는 것을 확인하였다. 로컬에 테스트를 위한 환경 구성이기 때문에 가장 기본적인 설정만으로 구성된다. MariaDB docker composeversion: '3.1'services: db: image: mariadb restart: always environment: MARIADB_ROOT_PASSWORD: ports: - 3306:3306 adminer: image: adminer restart: always ports: - 8080:8080docker ..
- 2023-09-18 00:55:25
- java time convert (시간 변환)알쓸개잡애플리케이션 개발을 하다 보면 종종 문자열 타입의 시간 정보를 자바의 LocalDateTime 혹은 LocalDate, LocalTime과 같은 인스턴스로 변환을 하거나 역으로 원하는 시간 형식으로 문자열로 변환을 해야 하는 경우가 있다. 또한 지역 시간(timezone)에 맞도록 시간을 변경해야 하는 경우도 있을 것이다. 이번 포스팅에서는 자바에서 시간 변환과 관련된 내용을 기록한다. 기본으로 제공되는 시간 관련 클래스 java에서는 기본적으로 제공하는 몇 가지 시간 관련 클래스가 있다. 해당 클래스의 목록은 아래와 같다. 클래스 now() 호출 형식 기본 timezone LocalDateTime 2023-09-17T13:22:51.003196 시스템에 적용된 timezone의 날짜와 시간 표시 Loc..
- 2023-09-17 19:35:01
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)