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
1
2
3
4
5
6
7
8
9
10
public class MyRegistrar implements ImportBeanDefinitionRegistrar {@Overridepublic 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.