我使用基于Spring框架的
我已经在配置类中正确使用了
我认为原因可能是与切面相关或者
实际上是否有更好的方法来处理初始化方法中的异常,并通过注释使其可重试,而不是在方法中编程尝试?
编辑:我现在同意不应该通过
然而,这还没有回答Spring框架的哪个部分不允许这两个注解同时起作用的问题。
AnnotationConfigApplicationContext
创建了一个应用程序。其中一个bean具有一个init方法,用于创建到外部服务的连接。这个方法可以用@PostConstruct
注解,以便在bean初始化后自动运行。当创建此连接时遇到异常时,我希望我的init方法重试最多5次。但是,当我同时使用@PostConstruct
和@Retryable
注解该方法时,发现异常只被抛出一次,然后程序退出——似乎@Retryable
没有起作用。我已经在配置类中正确使用了
@EnableRetry
,并与@Configuration
一起使用。我在同一个bean上创建了另一个被注释为retryable的方法B,如果在bean实例化后调用此方法,则可以看到当抛出异常时该方法被重试/表现如预期。我认为原因可能是与切面相关或者
@Postconstruct
发生在spring-retry元素附加之前?实际上是否有更好的方法来处理初始化方法中的异常,并通过注释使其可重试,而不是在方法中编程尝试?
编辑:我现在同意不应该通过
@Postconstruct
创建与外部服务的连接。如果重试失败,这可能会阻止整个上下文初始化,这可能会产生不利影响。然而,这还没有回答Spring框架的哪个部分不允许这两个注解同时起作用的问题。
start()
中连接 - 然后如何将此连接传递给特定的bean?在阅读您的答案之前,我一直想在PostConstruct
中尝试5次获取连接(在我的情况下:当前的hazelcast实例)。 - Woland