首页 > 解决方案 > 无法让 Spring Retry 工作

问题描述

在过去的几天里,我一直试图让我的 Spring 应用程序使用 Spring Retry,但到目前为止没有运气。我有一个基于 XML 的配置,所以我尝试添加

<context:annotation-config/>
<aop:aspectj-autoproxy />
<bean class="org.springframework.retry.annotation.RetryConfiguration" />

随着添加所需的依赖项并设置我正在使用的功能@Retryable,这不起作用。

我还在我的 XML 中为新创建的配置文件添加了组件扫描,我在其中添加了@Configuration@EnableRetry. 我已经用一个空的配置文件和一个在其中设置了 ReturnPolicy 的配置文件进行了尝试,尝试了使用和不使用 Aspects 而不是使用@Retryable. 两种选择都不起作用。

我的资源和想法已经用完了,任何帮助将不胜感激。

谢谢!

标签: javaspringspring-retry

解决方案


我希望您正确设置和调用它。需要从初始化的 spring 上下文中正确调用要发现的方法上的@Retryable注释。您是在这样做(从 spring 上下文中的 bean 调用的方法)还是通过其他方式调用 - 外部上下文?

或者 JUnit 是最好的朋友 - 试试SpringJunit4ClassRunner

您应该至少将您的测试类重组为:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=MyConfig.class)
public class MyServiceTest {
    @Configuration
    @EnableRetry
    @Import(myService.class)
    public static class MyConfig {}

几个参考页在这里


推荐阅读