Wie kann ich Spring Bean mit benutzerdefiniertem Bereich und @Autowired-Abhängigkeiten instanziieren?

In unserem Projekt verwenden wir Spring Request Scoped Beans. Jetzt müssen wir asynchrone Anfragen unterstützen und Request Scoped Beans funktionieren nicht für untergeordnete Threads. Ich bin mir bewusst über RequestContextFilter und es ist "Unterstützung" für Async, aber es scheint, dassRequestContextFilter erwartet, dass der Haupt-Thread wartet, bis die untergeordneten Threads beendet sind, was bei uns nicht der Fall ist. Unser Haupt-Thread kehrt sofort zurück, nachdem Sie mit @ neue Threads erzeugt habe@Async Annotation undDispatcherServlet löscht dasRequestContextHolder. Wenn die untergeordneten Threads den Punkt erreichen, an dem sie eine Bean mit Anforderungsbereich benötigen, wird@Autowired schlägt fehl.

Ich bin mir auch bewusst, SimpleThreadScope aber es bereinigt keine thread-lokalen Attribute und ist in einer Thread-Pooling-Situation nicht nur gefährlich zu verwenden, sondern geradezu nutzlos.

Was ich brauche, ist ein benutzerdefinierter Bereich. Bisher habe ich 3 nützliche Beispiele gefunden, die jedoch alle zu kurz kommen, da die Beans, die sie als Teil des benutzerdefinierten Bereichs instanziieren, einfache POJOs ohne Abhängigkeiten sind. Es ist unnötig zu erwähnen, dass dies in einer realen Anwendung nicht vorhanden ist. Kann mir jemand eine Möglichkeit vorschlagen, benutzerdefinierte Beans mit dem Wert @ zu instanziiere@Autowired Abhängigkeiten von Beans aus anderen Bereichen?

Was ich bisher gefunden habe:

https: //github.com/spring-by-example/spring-by-example/tree/master/modules/sbe-thread-scope/src/main/java/org/springbyexample/bean/scope/threa

https: //github.com/billkoch/spring-async-md

Spring Bean Custom Scope JMS

Antworten auf die Frage(2)

Ihre Antwort auf die Frage