Issue
I have a spring bean which I need to change after it's created, but I don't have access to edit the source of the bean's class; so I can't use...
- init-method
- InitializingBean
- @PostConstruct
Is there some way I can detect when this bean is created by id in another class, then apply the change I need?
Thanks
Solution
You can implement BeanPostProcessor to apply your own custom logic.
Example:
public class UserPassAuthFilterBeanPostProcessor implements BeanPostProcessor {
private String usernameParameter;
private String passwordParameter;
@Override
public final Object postProcessAfterInitialization(final Object bean, final String beanName) {
return bean;
}
@Override
public final Object postProcessBeforeInitialization(final Object bean, final String beanName) {
if (bean instanceof UsernamePasswordAuthenticationFilter) {
final UsernamePasswordAuthenticationFilter filter = (UsernamePasswordAuthenticationFilter) bean;
filter.setUsernameParameter(getUsernameParameter());
filter.setPasswordParameter(getPasswordParameter());
}
return bean;
}
//...
}
Answered By - amant singh