2

私は春の再試行プロジェクトを試してきました。@Retryable 機能を正常に使用しましたが、JDK 動的プロキシを使用して機能させることができません。

テストで次のコード スニペットを使用しています。

@Configuration
@EnableRetry
public class TestConfig {
    @Bean
    public MethodInterceptor retryInterceptor() {
        return RetryInterceptorBuilder.stateful().maxAttempts(3).build();
    }
}

@Service
public class RetryableServiceImpl implements RetryableService {

    private int count = 0;

    @Retryable(RuntimeException.class)
    @Override
    public void service() {

        if (count++ < 2) {
            throw new RuntimeException("Planned");
        }
    }

    @Override
    public int getCount() {
        return count;
    }

}

@ContextConfiguration(...)
public class RetryableServiceImplTest ... {

    @Autowired
    private RetryableService retryableService;

    @Test
    public void test() {
        assertTrue(AopUtils.isAopProxy(retryableService));
        assertTrue(AopUtils.isJdkDynamicProxy(retryableService));
        assertFalse(AopUtils.isCglibProxy(retryableService));
        retryableService.service();
        assertEquals(3, retryableService.getCount());
    }

}

ここで入手できるサンプル プロジェクト: https://github.com/maddenj-ie/retry.git

だから、私の質問は

  1. これは、cglib または JDK 動的プロキシのいずれかを使用して機能する必要がありますか?

  2. もしそうなら、私の設定の何が問題になっていますか?

助けてくれてありがとう。

よろしく、ジョー

4

1 に答える 1