0
作成した後に変更する必要があるスプリング・ビーンがありますが、Beanのクラスのソースを編集するアクセス権がありません。私は@PostConstruct 作成後にBeanを編集します。クラスのためにソースを変更できません。
- のinitメソッド
- InitializingBean ...使用することはできません必要な変更を適用しますか?
おかげ
作成した後に変更する必要があるスプリング・ビーンがありますが、Beanのクラスのソースを編集するアクセス権がありません。私は@PostConstruct 作成後にBeanを編集します。クラスのためにソースを変更できません。
おかげ
独自のカスタム・ロジックを適用する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は、Springフレームワークが提供する豆です。あなたが変えたいbeensはどこから来て、どのようにインスタンス化されていますか? –
私たちのソフトウェアは、プラットフォーム、ソリューション、実装の3つの階層構造を使用しています。変更しようとしているBeanはプラットフォームライブラリに存在し、実装レベルで作業しています。 –
次の「私は既存の*プラットフォーム*ライブラリを変更しようとしています。私たちはすべて限界を回避しようとしましたが、次のプラットフォームリリースを待つことができませんでしたが、プラットフォームを拡張することは正しいことのようです。あなたの実装がすべてのスプリングコンテキストをロードしている場合は、 '' 'BeanPostProcessor'''を示唆的に使用できます –