[JAVA] Einfacher Einsteckmechanismus im Frühjahr, berücksichtigen Sie auch die Reihenfolge

Als einfacher Einsteckmechanismus mit Spring kann er wie unten beschrieben sehr einfach realisiert werden.

Einfacher Einsteckmechanismus durch DI-Container realisiert https://blog.ik.am/entries/331

Hier betrachten wir auch die Reihenfolge, in der die Stecker eingesetzt werden. Es ist sehr einfach, fügen Sie einfach "@ Priority" hinzu, um die Reihenfolge zu definieren.

MyPlugin.java


public interface MyPlugin {
    String execute();
}

MyPluginService.java


@Service
public class MyPluginService {
    @Autowired
    List<MyPlugin> plugins;

    public List<String> execute() {
        return plugins.stream().map(p -> p.execute()).collect(Collectors.toList());
    }
}

PluginController.java


@RestController
public class PluginController {
    @Autowired
    MyPluginService myPluginService;

    @GetMapping("plugins")
    public List<String> plugins() {
        return myPluginService.execute();
    }
}
@Component
@Priority(10)
public class Fuga1Plugin implements MyPlugin {
    @Override
    public String execute() {
        return "Fuga1Plugin";
    }
}

@Component
@Priority(50)
public class Hoge1Plugin implements MyPlugin {
    @Override
    public String execute() {
        return "Hoge1Plugin";
    }
}

@Component
@Priority(100)
public class Fuga2Plugin implements MyPlugin {
    @Override
    public String execute() {
        return "Fuga2Plugin";
    }
}

@Component
@Priority(200)
public class Hoge2Plugin implements MyPlugin {
    @Override
    public String execute() {
        return "Hoge2Plugin";
    }
}

Ausführungsergebnis


$ curl http://localhost:8080/plugins | jq .
[
  "Fuga1Plugin",
  "Hoge1Plugin",
  "Fuga2Plugin",
  "Hoge2Plugin"
]

Ab Spring 4.1 wird übrigens empfohlen, "@ Priority" anstelle von "@ Order" zu verwenden. Wenn Sie "@ Conditional" verwenden, können Sie auch die zutreffenden Bedingungen schreiben, aber es scheint, dass Sie nicht viel Gelegenheit haben werden, sie zu verwenden.

Recommended Posts

Einfacher Einsteckmechanismus im Frühjahr, berücksichtigen Sie auch die Reihenfolge
Installieren Sie das Plug-In in Eclipse
Verwenden Sie das Findbugs-Plugin in Eclipse
Die Frühjahrsvalidierung war in der Reihenfolge von Form und BindingResult wichtig
Reihenfolge der Verarbeitung im Programm
Spring Autowired wird im Konstruktor geschrieben
Konsoleneingabe in Java (Verständnis des Mechanismus)
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an