0 Tage Serie
java / expert
Snippet

Benutzerdefinierte Thread-Local Scope Implementierung

Benutzerdefinierte Scopes ermöglichen es Entwicklern, Bean-Lebenszyklen über 'singleton' oder 'prototype' hinaus zu verwalten. Ein ThreadScope ist ein Experten-Pattern für Hochverfügbarkeitsszenarien, um Status pro Ausführungsthread zu isolieren.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class ThreadScope implements Scope {
private final ThreadLocal<Map<String, Object>> threadObjects = ThreadLocal.withInitial(HashMap::new);
@Override
public Object get(String name, ObjectFactory<?> objectFactory) {
return threadObjects.get().computeIfAbsent(name, k -> objectFactory.getObject());
}
@Override
public Object remove(String name) {
return threadObjects.get().remove(name);
}
@Override
public void registerDestructionCallback(String name, Runnable callback) {}
@Override
public String getConversationId() {
return Thread.currentThread().getName();
}
}
spring
Erklärung
1
implements Scope
Das zentrale SPI zur Erweiterung von Springs Bean-Lifecycle-Management.
2
threadObjects.get().computeIfAbsent(...)
Verwendet eine ThreadLocal-Map zum Speichern und Abrufen von Bean-Instanzen, um Thread-Isolierung sicherzustellen.