스프링
-
@Transactional vs TransactionTemplate극락코딩 2023. 8. 22. 00:53
스프링에서 트랜잭션을 다루는 2가지 방법이 있다. @Transactional을 사용하는 선언적 트랜잭션과 TransactionTemplate을 사용하는 프로그래밍적 트랜잭션이다. 2가지 방법에 대해 간단하게 정리하면, 다음과 같다. @Transactional 어노테이션 기반으로 method에 트랜잭션을 거는 방법 proxy로 원래 객체를 감싸는데, 그 이유는 실제 메서드의 가장 앞단과 가장 뒤에 트랜잭션의 begin과 commit으로 감싸기 위함 TransactionInterceptor.class @Override @Nullable public Object invoke(MethodInvocation invocation) throws Throwable { // Work out the target class..
-
Server Shutdown극락코딩 2023. 7. 30. 23:25
서버의 shutdown 방식에 대해 학습하자 Default Options 기본적으로 Spring에서 서버 shutdown 옵션은 `IMMEDIATE`이다. 즉시 서버의 구동을 중지시키는 것이다. 하지만, 이런 옵션은 현재 작업중인 API의 응답 손실을 야기시킬 수 있다. 그렇기 때문에 데이터 혹은 요청 손실을 줄이기 위해서 `GRACEFUL`을 이용하는 것을 권한다. (물론, 상황에 따라 다름) IMMEDIATE 기본으로 설정된 shutdown 기법이다. `org.springframework.boot.web.server.Shutdown`을 참고하자. 서버 종료 요청이 들어온 경우, 즉시 서버의 가동을 중지시킨다. GRACEFUL 서버 종료 요청이 들어오더라도, 현재 작업 중인 내역을 수행하고 중지시키는 ..
-
스프링 스케줄러 사용법극락코딩 2023. 7. 30. 23:22
스프링 스케줄러 사용법 스케줄링 관련 서비스를 구현할때, 어떤 주기로 스케줄링을 할지 고민할 때가 많다. cron 및 스프링 스케줄러에서 지원하는 기능을 알아보자 스프링 스케줄러 패키지 Gradle: org.springframework:spring-context / org.springframework.scheduling 먼저 스케줄러를 사용하기 위해서는 스프링 스케줄러 빈을 등록해야 한다. 스케줄러를 사용한다고 명시해야 사용 가능하다 @Configuration @EnableScheduling class SchedulerConfig { } 스케줄러 주기를 설정하는 방법은 다음과 같다. cron fixedDelay fixedDelayString fixedRate fixedRateString 그외.. zone..