创建后编辑bean,因为class我不能修改源?
Edit bean after creation, for class I can't modify the source of?
我有一个 spring bean,创建后我需要对其进行更改,但我无权编辑 bean class 的源代码;所以我不能用...
- 初始化方法
- 初始化Bean
- @PostConstruct
有什么方法可以检测到此 bean 何时由另一个 class 中的 id 创建,然后应用我需要的更改?
谢谢
您可以实施 BeanPostProcessor 以应用您自己的自定义逻辑。
示例:
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;
}
//...
}
我有一个 spring bean,创建后我需要对其进行更改,但我无权编辑 bean class 的源代码;所以我不能用...
- 初始化方法
- 初始化Bean
- @PostConstruct
有什么方法可以检测到此 bean 何时由另一个 class 中的 id 创建,然后应用我需要的更改?
谢谢
您可以实施 BeanPostProcessor 以应用您自己的自定义逻辑。
示例:
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;
}
//...
}