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:
parent
6a2d723155
commit
19eb14d09d
|
@ -23,6 +23,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.retry</groupId>
|
<groupId>org.springframework.retry</groupId>
|
||||||
<artifactId>spring-retry</artifactId>
|
<artifactId>spring-retry</artifactId>
|
||||||
|
<version>${spring-retry.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
|
@ -45,6 +46,7 @@
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
|
<spring-retry.version>2.0.0</spring-retry.version>
|
||||||
<annotation-api.version>1.3.2</annotation-api.version>
|
<annotation-api.version>1.3.2</annotation-api.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.core.task.SimpleAsyncTaskExecutor;
|
|
||||||
import org.springframework.scheduling.annotation.AsyncConfigurer;
|
import org.springframework.scheduling.annotation.AsyncConfigurer;
|
||||||
import org.springframework.scheduling.annotation.EnableAsync;
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
|
|
|
@ -2,7 +2,6 @@ package com.baeldung.springretry;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import org.springframework.context.annotation.PropertySource;
|
|
||||||
import org.springframework.retry.annotation.Backoff;
|
import org.springframework.retry.annotation.Backoff;
|
||||||
import org.springframework.retry.annotation.Recover;
|
import org.springframework.retry.annotation.Recover;
|
||||||
import org.springframework.retry.annotation.Retryable;
|
import org.springframework.retry.annotation.Retryable;
|
||||||
|
@ -13,13 +12,13 @@ public interface MyService {
|
||||||
@Retryable
|
@Retryable
|
||||||
void retryService();
|
void retryService();
|
||||||
|
|
||||||
@Retryable(value = SQLException.class)
|
@Retryable(retryFor = SQLException.class)
|
||||||
void retryServiceWithRecovery(String sql) throws SQLException;
|
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;
|
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}"))
|
backoff = @Backoff(delayExpression = "${retry.maxDelay}"))
|
||||||
void retryServiceWithExternalConfiguration(String sql) throws SQLException;
|
void retryServiceWithExternalConfiguration(String sql) throws SQLException;
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import java.sql.SQLException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MyServiceImpl implements MyService {
|
public class MyServiceImpl implements MyService {
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
package com.baeldung.springretry;
|
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.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.retry.support.RetryTemplate;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
@ -14,8 +20,10 @@ import java.sql.SQLException;
|
||||||
@ContextConfiguration(classes = AppConfig.class, loader = AnnotationConfigContextLoader.class)
|
@ContextConfiguration(classes = AppConfig.class, loader = AnnotationConfigContextLoader.class)
|
||||||
public class SpringRetryIntegrationTest {
|
public class SpringRetryIntegrationTest {
|
||||||
|
|
||||||
@Autowired
|
@SpyBean
|
||||||
private MyService myService;
|
private MyService myService;
|
||||||
|
@Value("${retry.maxAttempts}")
|
||||||
|
private String maxAttempts;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RetryTemplate retryTemplate;
|
private RetryTemplate retryTemplate;
|
||||||
|
@ -33,11 +41,13 @@ public class SpringRetryIntegrationTest {
|
||||||
@Test
|
@Test
|
||||||
public void givenRetryServiceWithCustomization_whenCallWithException_thenRetryRecover() throws SQLException {
|
public void givenRetryServiceWithCustomization_whenCallWithException_thenRetryRecover() throws SQLException {
|
||||||
myService.retryServiceWithCustomization(null);
|
myService.retryServiceWithCustomization(null);
|
||||||
|
verify(myService, times(Integer.parseInt(maxAttempts))).retryServiceWithCustomization(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenRetryServiceWithExternalConfiguration_whenCallWithException_thenRetryRecover() throws SQLException {
|
public void givenRetryServiceWithExternalConfiguration_whenCallWithException_thenRetryRecover() throws SQLException {
|
||||||
myService.retryServiceWithExternalConfiguration(null);
|
myService.retryServiceWithExternalConfiguration(null);
|
||||||
|
verify(myService, times(Integer.parseInt(maxAttempts))).retryServiceWithExternalConfiguration(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = RuntimeException.class)
|
@Test(expected = RuntimeException.class)
|
||||||
|
|
Loading…
Reference in New Issue