본문 바로가기

Spring32

Spring - @Retryable 을 이용한 재수행 로직 처리하기 들어가며 서비스를 개발하거나 어떤 로직을 구현할 때 실패에 따른 재수행 로직을 추가하고 싶을 때가 있다. 따로 코드로 구현할 수 있겠지만 스프링을 사용한다면 스프링에서 제공하는 @Retryable 어노테이션을 통해서 간편하게 재수행 로직을 구현할 수 있다. Spring - @Retryable 을 이용한 재수행 로직 처리하기 @Retryable 사용 방법 먼저 @Retryable을 사용하기 위해서는 다음 두가지 작업을 해줘야 한다. 1. 의존성 추가 implementation("org.springframework.retry:spring-retry") implementation("org.springframework:spring-aspects") 2. @EnableRetry 어노테이션 추가 다음 두가지 작업이.. 2023. 4. 2.
Spring - @ConfigurationProperties 사용방법 정리 및 @ConstructorBinding @ConfigurationProperties은 *.properties or *.yml 파일에 있는 property를 자바 클래스에 값을 가져와 사용할 수 있게 해주는 어노테이션이다. @Value를 통해서도 값을 가지고 올 수 있지만 클래스 파일로 관리할 수 있다는 점에서 차이가 있다. 스프링부트 2.2 버전 전 후로 사용방법에 차이가 있어 내용을 정리함과 동시에 @ConstructorBinding 어노테이션에 대해서도 정리한다. Spring - @ConfigurationProperties 사용방법 정리 및 @ConstructorBinding @ConfigurationProperties 스프링부트 2.2 버전 이전 사용방법 기존에는 @ConfigurationProperties 사용하기 위해서는 @Confi.. 2023. 2. 25.
SpringBoot - LogBack 관련 개념 및 설정 방법 (2) 지난 시간에는 개념에 대해서 정리하였고 이번 시간에는 기본으로 제공되는 logback을 확장하여 사용하는 방법에 대해서 정리한다. SpringBoot - LogBack 관련 개념 및 설정 방법 (2) 설정 방법 먼저 가장 기본이 될 default log 설정 xml 파일을 생성해준다. 여기서 보이는 org/springframework/boot/logging/logback/base.xml 경로를 따라가보면 스프링부트에서 기본으로 제공하는 logback 관련 설정들을 확인할 수 있다. 다음과 같이 xml 파일이 4가지가 존재하는데 하나씩 살펴보면 base.xml 은 기본 logback 설정 파일이다. console-appender.xml 은 말 그대로 콘솔에 대한 appender 설정 파일이다. ${CONS.. 2023. 1. 29.
스프링부트에서 톰캣이 어떻게 자동으로 설정되어 실행되는가 스프링부트를 이용하면 내장 서블릿 컨테이너인 톰캣이 기본적으로 내장되어 있다. 근데 여기서 어떻게 톰캣이 자동으로 설정되어 기본 서버로서의 역할을 하는지 궁금하여 알아본 내용을 정리한다. 스프링부트에서 톰캣이 어떻게 자동으로 설정되어 실행되는가 서블릿 컨텐이너 - 톰캣 스프링부트에서 스프링 웹을 사용하게 되면 프로젝트에는 톰캣이 기본적으로 내장되어 있다. 근데 여기서 톰캣이 어떻게 자동으로 설정되어 기본 서버로 실행이 되는 것일까? 이것을 알기위해서는 먼저 스프링부트에서 빈을 어떻게 설정하는지 알아야한다. 스프링부트에서 빈은 두번의 단계를 거쳐서 생성된다. 첫번째로 @ComponentScan 하위 패키지에서 @Component, @Service, @Controller 등의 컴포넌트를 먼저 스캔해서 빈을 .. 2023. 1. 16.
스프링 트랜잭션 @Transactional(readOnly=true) @Transactional 옵션에는 여러가지 옵션 설정이 있지만 오늘은 그 중에서 readOnly 옵션에 대해서 정리하려고 한다. 옵션에서도 알 수 있듯이 읽기 전용이라는 것을 알 수 있다. 그렇다면 이런 의문점이 들 수 있다. 어짜피 조회만 하는 곳에 @Transactional 어노테이션을 붙일 필요가 있을까? 라는 의문점이다. 결론적으로는 안붙인다고 문제가 될 것은 없지만 붙이게 된다면 여러가지 이점을 주기 때문에 붙이는 것이 좋다. 그럼 @Transactional(readOnly=true) 설정에 대해서 알아보자. 스프링 트랜잭션 @Transactional(readOnly=true) Transaction? 먼저 트랜잭션이란 데이터베이스의 상태를 변경하고자 할 때 한 번에 수행되어야 하는 연산들을 의.. 2022. 12. 9.
Spring - Event Publisher Listener (1) 정의 스프링에서 제공하는 이벤트 메커니즘을 사용하면 의존성이 강한 로직들의 레이어를 분리가 가능하다. 이렇게 되면 느슨한 결합 형태로 만들 수 있다. 예를 들어 A 서비스 로직에서 B 서비스 로직을 실행해야하는 경우 이벤트 발행을 통해 분리할 수 있는 것이다. 이때 사용하는 이벤트에 관련한 정보를 정리한다. Spring - Event Publisher Listener (1) 정의 스프링에서의 일반적 상황과 이벤트를 이용한 상황 스프링에서는 내부에 이벤트라는 메커니즘을 가지고 있다. 여기서 말하는 이벤트란 스프링의 빈과 빈 사이에 데이터를 전달하는 방법 중 하나를 의미한다. 스프링에서는 일반적으로 데이터 전달 시 DI를 통해서 이루어진다. A 클래스에서 B 클래스에 대한 의존성을 주입을 받아 A클래스에서 B에 .. 2022. 10. 19.