0 day streak
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
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
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.