Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@bdemers
Created October 4, 2019 21:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bdemers/31811e75613b4e10f94fc327d99073ad to your computer and use it in GitHub Desktop.
Save bdemers/31811e75613b4e10f94fc327d99073ad to your computer and use it in GitHub Desktop.
Wrap Beans
@Bean
BeanPostProcessor delegateForFoo() {
return new WrappingBeanPostProcessor<>(Foo.class, original -> new MyCustomFoo(original));
}
public class WrappingBeanPostProcessor<T> implements BeanPostProcessor {
private final Class<T> type;
private final UnaryOperator<T> beanCreator;
private WrappingBeanPostProcessor(Class<T> type, UnaryOperator<T> beanCreator) {
this.type = type;
this.beanCreator = beanCreator;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (type.isInstance(bean)) {
return beanCreator.apply((T) bean);
}
return bean;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment