以下代码未重试.我错过了什么?
@EnableRetry @SpringBootApplication public class App implements CommandLineRunner { ......... ......... @Retryable() ResponseEntity<String> authenticate(RestTemplate restTemplate,httpentity<MultiValueMap<String,String>> entity) throws Exception { System.out.println("try!"); throw new Exception(); //return restTemplate.exchange(auth_endpoint,HttpMethod.POST,entity,String.class); }
我已将以下内容添加到pom.xml中.
<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> <version>1.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
我也试过为@Retryable提供不同的参数组合.
@Retryable(maxAttempts=10,value=Exception.class,backoff=@Backoff(delay = 2000,multiplier=2))
谢谢.
解决方法
对于要发现的方法的@Retryable注释,需要从初始化的上下文中正确调用它.方法是从spring上下文中调用bean还是通过其他方式调用?
如果测试这是你的跑步者使用SpringJunit4ClassRunner?