0 Tage Serie
java / expert
Snippet

Programmatische Bean-Registrierung mittels ImportBeanDefinitionRegistrar

ImportBeanDefinitionRegistrar bietet Low-Level-Zugriff auf die BeanDefinitionRegistry. Es wird für die Metaprogrammierung verwendet, bei der Beans dynamisch basierend auf Annotationen oder Classpath-Scanning erstellt werden.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
public class MyRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
GenericBeanDefinition beanDef = new GenericBeanDefinition();
beanDef.setBeanClass(DynamicService.class);
beanDef.getPropertyValues().add("config", "expert-mode");
beanDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
registry.registerBeanDefinition("dynamicService", beanDef);
}
}
spring
Erklärung
1
registerBeanDefinitions(...)
Callback, der die manuelle Manipulation der Bean-Registry ermöglicht, bevor die Factory finalisiert wird.
2
new GenericBeanDefinition()
Erstellt ein Metadaten-Objekt für eine Bean, was die programmatische Kontrolle über Properties, Scopes und Rollen ermöglicht.