JAVA-18602: update spring-retry version (#13637)

* java-18602 update spring-retry version

* java-18602 spring-scheduling, improve test coverage

* Replace usage of deprecated function in springframework-util with apache-common-lang library
This commit is contained in:
3hsan 2023-03-24 07:15:13 +01:00 committed by GitHub
parent 6a2d723155
commit 19eb14d09d
5 changed files with 17 additions and 7 deletions

View File

@ -23,6 +23,7 @@
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
<version>${spring-retry.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
@ -45,6 +46,7 @@
</dependencies>
<properties>
<spring-retry.version>2.0.0</spring-retry.version>
<annotation-api.version>1.3.2</annotation-api.version>
</properties>

View File

@ -7,7 +7,6 @@ import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.SimpleAsyncTaskExecutor;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

View File

@ -2,7 +2,6 @@ package com.baeldung.springretry;
import java.sql.SQLException;
import org.springframework.context.annotation.PropertySource;
import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Recover;
import org.springframework.retry.annotation.Retryable;
@ -13,13 +12,13 @@ public interface MyService {
@Retryable
void retryService();
@Retryable(value = SQLException.class)
@Retryable(retryFor = SQLException.class)
void retryServiceWithRecovery(String sql) throws SQLException;
@Retryable(value = { SQLException.class }, maxAttempts = 2, backoff = @Backoff(delay = 100))
@Retryable(retryFor = SQLException.class , maxAttempts = 2, backoff = @Backoff(delay = 100))
void retryServiceWithCustomization(String sql) throws SQLException;
@Retryable( value = SQLException.class, maxAttemptsExpression = "${retry.maxAttempts}",
@Retryable(retryFor = SQLException.class, maxAttemptsExpression = "${retry.maxAttempts}",
backoff = @Backoff(delayExpression = "${retry.maxDelay}"))
void retryServiceWithExternalConfiguration(String sql) throws SQLException;

View File

@ -5,7 +5,7 @@ import java.sql.SQLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import org.apache.commons.lang3.StringUtils;
@Service
public class MyServiceImpl implements MyService {

View File

@ -1,8 +1,14 @@
package com.baeldung.springretry;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.mock.mockito.SpyBean;
import org.springframework.retry.support.RetryTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ -14,8 +20,10 @@ import java.sql.SQLException;
@ContextConfiguration(classes = AppConfig.class, loader = AnnotationConfigContextLoader.class)
public class SpringRetryIntegrationTest {
@Autowired
@SpyBean
private MyService myService;
@Value("${retry.maxAttempts}")
private String maxAttempts;
@Autowired
private RetryTemplate retryTemplate;
@ -33,11 +41,13 @@ public class SpringRetryIntegrationTest {
@Test
public void givenRetryServiceWithCustomization_whenCallWithException_thenRetryRecover() throws SQLException {
myService.retryServiceWithCustomization(null);
verify(myService, times(Integer.parseInt(maxAttempts))).retryServiceWithCustomization(any());
}
@Test
public void givenRetryServiceWithExternalConfiguration_whenCallWithException_thenRetryRecover() throws SQLException {
myService.retryServiceWithExternalConfiguration(null);
verify(myService, times(Integer.parseInt(maxAttempts))).retryServiceWithExternalConfiguration(any());
}
@Test(expected = RuntimeException.class)