我想创建一个功能接口或默认方法,在其中传递 jpa 存储库方法(例如
findById
或 findByNumber
)并让它返回泛型类型;这样,如果应用程序无法连接到数据库,我会用 @Retryable
对其进行注释。以下是我想要通过功能接口传递的方法的示例:
Employee employee = repository.findById("2ed21");
Record record = repository.findbyNumber(311);
使用
Supplier
作为参数的简单方法怎么样,您可以在其中放置任何内容?
@Retryable(...)
public <T> T retry(Supplier<T> supplier) {
return supplier.get();
}
用途:
Employee employee = retry(() -> repository.findById("2ed21"));
Record record = retry(() -> repository.findbyNumber(311));
一些注意事项:
@Retryable
注解的方法来克服 Spring AOP 的限制。老实说,我从未使用过@Retryable
,但我想它的工作方式与@Transactional
相同,相关:Spring @Transaction 方法调用同一个类中的方法,不起作用?