---
title: 'Spring Retry'
url: 'https://tutego.de/blog/javainsel/2018/04/spring-retry-projekt'
markdown: 'https://tutego.de/blog/javainsel/2018/04/spring-retry-projekt.md'
date: '2018-04-06'
description: 'Das Spring Retry Projekt Spring Retry ist ein Zusatzprojekt (), um Codeblöcke wiederholt auszuführen, wenn sie zu einem Fehler führen. Das ist nützlich beim Ansprechen von Remote-Diensten, die temporär nicht verfügbar sein können. Als erstes müssen zwei Dependencies in unsere POM: org.spring…'
taxonomy:
  category:
    - Spring
---

# Spring Retry

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Spring Retry

06.04.2018 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

### Das Spring Retry Projekt

**Spring Retry** ist ein Zusatzprojekt (), um Codeblöcke wiederholt auszuführen, wenn sie zu einem Fehler führen.

- Das ist nützlich beim Ansprechen von Remote-Diensten, die temporär nicht verfügbar sein können.

Als erstes müssen zwei Dependencies in unsere POM:

```xml

    org.springframework.retry
    spring-retry

    org.springframework
    spring-aspects

```

### `@Retryable`

Schreiben wir eine Bean, die zwei Anläufe braucht, eine Operation durchzuführen.

```java
@Component
class Achiever {

  int tries = 1;

  @Retryable   
  public int tryIt() {   

    System.out.println( "Runde " + tries );
    tries++;

    if ( tries != 3 )
      throw new IllegalStateException( "Runde nicht 3" );

    return tries;
  }
}
```

`Retryable` drückt aus, das eine Operation bei Ausnahmen automatisch neu aufgerufen werden soll.Die Methoden können eine Rückgabe haben, oder auch keine.

### `@EnableRetry`

Damit Spring für die annotierten Methoden einen Proxy baut, müssen wir eine `@Configuration` mit `@EnableRetry` annotieren.

Wir können nun den `Achiever` injizieren:

```java
@Autowired Achiever archiever;
```

Und die Methode ausführen:

```java
System.out.println( "Vor dem Aufruf" );
int i = archiever.tryIt();
System.out.println( "Nach dem Aufruf ist i=" + i );
```

Auf der Konsole erscheint keine `Exception`. Nur:

```text
Vor dem Aufruf
Runde 1
Runde 2
Nach dem Aufruf
```

### Der Annotationsty `Retryable`

```java

@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Retryable {
    String interceptor() default "";
    Class
```

Kategorien: [Spring](https://tutego.de/blog/javainsel/category/spring/)

## 1 Kommentare

**Arne Zelasko** · [07.04.2018 09:55](#comment-656280)

Erinnert mich an die Failsafe Library https://github.com/jhalterman/failsafe

Die bisherigen Kommentare wurden aus WordPress übernommen. Neue Kommentare sind derzeit geschlossen.

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Caching in Spring Boot nutzen](https://tutego.de/blog/javainsel/2018/04/caching-in-spring-boot-nutzen.md)
- Next: [Release von Eclipse Oxygen 3A Paketen](https://tutego.de/blog/javainsel/2018/04/release-von-eclipse-oxygen-3a-paketen.md)
