我有以下代码,如果我在控制器方法上保留retry注解,则会重试,但如果我在另一个方法上保留retry注解,则不会重试。场景是,在API方法createOrder()中,我从外部系统获取orderId,该方法工作正常。但我需要重试createOrder(String orderId)方法,该方法有时会失败。第一个
eqfvzcg81#
这是因为***代理***。使用@Retry注解时,将创建并使用类的代理示例。代理的工作方式是拦截从一个Bean/类到另一个Bean/类的调用,但它不能拦截Bean/类中方法到方法的调用。因此,解决方法是***将方法移动到不同的类***。一旦方法被移动到不同的类,spring代理将考虑来自单独bean的调用,并且它可以拦截。
1条答案
按热度按时间eqfvzcg81#
这是因为***代理***。使用@Retry注解时,将创建并使用类的代理示例。代理的工作方式是拦截从一个Bean/类到另一个Bean/类的调用,但它不能拦截Bean/类中方法到方法的调用。
因此,解决方法是***将方法移动到不同的类***。一旦方法被移动到不同的类,spring代理将考虑来自单独bean的调用,并且它可以拦截。