java / expert
Snippet
Programmatic Bean Registration using ImportBeanDefinitionRegistrar
ImportBeanDefinitionRegistrar provides low-level access to the BeanDefinitionRegistry. It is used for meta-programming where beans are created dynamically based on annotations or classpath scanning, bypassing standard @Bean declarations.
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
Breakdown
1
registerBeanDefinitions(...)
Callback that allows manual manipulation of the bean registry before the factory is finalized.
2
new GenericBeanDefinition()
Creates a metadata object for a bean, allowing programmatic control over properties, scope, and roles.