전체 글91 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. 9. 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. 8. 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. 3. application events and listeners Spring framework는 애플리케이션 기동시 ContextRefreshedEvent 외에도 몇 가지 추가적인 이벤트를 전송한다. 이번 포스팅에서는 애플리케이션 기동시 발생하는 events와 이에 대한 listeners에 대해서 기록한다. 일부 event는 ApplicationContext가 생성되기 전에 발생하므로 해당 event에 대한 리스너를 @Bean으로 등록할 수 없다. ApplicationContext가 생성되기 전에 발생하는 event listener를 등록하려면 SpringApplication.addListeners(...) 메서드 또는 SpringApplicationBuilder.listeners(...) 메서드를 이용하여 등록할 수 있다. 애플리케이션이 생성되는 방식에 관계없이 해.. 스프링부트 2023. 10. 2. 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. 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. 9. 24. 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. 테스트 환경을 위한 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 .. ETC 2023. 9. 18. java time convert (시간 변환) 애플리케이션 개발을 하다 보면 종종 문자열 타입의 시간 정보를 자바의 LocalDateTime 혹은 LocalDate, LocalTime과 같은 인스턴스로 변환을 하거나 역으로 원하는 시간 형식으로 문자열로 변환을 해야 하는 경우가 있다. 또한 지역 시간(timezone)에 맞도록 시간을 변경해야 하는 경우도 있을 것이다. 이번 포스팅에서는 자바에서 시간 변환과 관련된 내용을 기록한다. 기본으로 제공되는 시간 관련 클래스 java에서는 기본적으로 제공하는 몇 가지 시간 관련 클래스가 있다. 해당 클래스의 목록은 아래와 같다. 클래스 now() 호출 형식 기본 timezone LocalDateTime 2023-09-17T13:22:51.003196 시스템에 적용된 timezone의 날짜와 시간 표시 Loc.. 자바 2023. 9. 17. spring boot application startup tracking spring boot 애플리케이션을 시작하는 동안 SpringApplication과 ApplicationContext는 애플리케이션 라이프사이클, 빈 라이프사이클, 애플리케이션 이벤트 처리와 관련된 많은 작업을 수행한다. Spring은 ApplicationStartup을 통해서 StartupStep 객체를 사용하여 애플리케이션 시작 과정을 추적할 수 있다. 추적 데이터는 프로파일링 목적으로 수집하거나 애플리케이션 시작 프로세스를 이해하는데 도움이 될 수 있다. spring boot 애플리케이션 시작 과정에 대한 추적 데이터를 얻는 방법에 대해서 기록한다. Spring Boot 2.4부터 ApplicationStartup 메트릭을 생성할 수 있게 되었다. 해당 메트릭에는 시작 과정에서 생성되는 각각의 이벤.. 스프링부트 2023. 9. 17. 이전 1 2 3 4 5 6 7 8 다음 💲 추천 글