0 Tage Serie
java / expert
Snippet

Fortgeschrittene Bean-Metadaten-Manipulation via BeanFactoryPostProcessor

Der BeanFactoryPostProcessor ermöglicht es, Bean-Definitionen abzufangen und zu modifizieren, bevor die Objekte überhaupt instanziiert werden, was übergreifende Änderungen wie Scope-Überschreibungen oder dynamische Eigenschaftsinjektion ermöglicht.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
11
12
@Component
public class AuditMetadataProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
for (String beanName : beanFactory.getBeanDefinitionNames()) {
BeanDefinition bd = beanFactory.getBeanDefinition(beanName);
if (bd.getBeanClassName() != null && bd.getBeanClassName().contains("Service")) {
bd.setScope(BeanDefinition.SCOPE_PROTOTYPE);
}
}
}
}
spring
Erklärung
1
implements BeanFactoryPostProcessor
Interface zur Modifikation der internen Bean-Definitionen des Application Contexts.
2
postProcessBeanFactory(...)
Callback, der ausgeführt wird, nachdem alle Bean-Definitionen geladen sind, aber vor der Instanziierung.
3
bd.setScope(BeanDefinition.SCOPE_PROTOTYPE)
Dynamisches Ändern des Lifecycle-Scopes spezifischer Beans zur Laufzeit.