Close

Spring Framework - BeanDefinitionRegistryPostProcessor Examples

[Last Updated: Nov 8, 2025]

Spring Framework 

Programmatically registering beans by implementing BeanDefinitionRegistryPostProcessor

package com.logicbig.example;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.beans.factory.support.GenericBeanDefinition;

public class MyBeanDefinitionRegistryPostProcessor
implements BeanDefinitionRegistryPostProcessor {

@Override
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
throws BeansException {

GenericBeanDefinition bd = new GenericBeanDefinition();
bd.setBeanClass(MyBean.class);
bd.getPropertyValues().add("strProp", "my string property");
registry.registerBeanDefinition("myBeanName", bd);
}

@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
throws BeansException {
//no op
}
}

package com.logicbig.example;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfig {
@Bean
public MyBeanDefinitionRegistryPostProcessor myConfigBean() {
return new MyBeanDefinitionRegistryPostProcessor();
}
}

package com.logicbig.example;

public class MyBean {
private String strProp;

public void setStrProp(String strProp) {
this.strProp = strProp;
}

public void doSomething() {
System.out.println("from MyBean: " + strProp);
}
}

package com.logicbig.example;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class BeanDefinitionRegistryPostProcessorExample {

public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(MyConfig.class);

MyBean bean = (MyBean) context.getBean("myBeanName");
bean.doSomething();
}
}

Output

from MyBean:  my string property
Original Post




See Also