2017-01-11 4 views
0

作成した後に変更する必要があるスプリング・ビーンがありますが、Beanのクラスのソースを編集するアクセス権がありません。私は@PostConstruct 作成後にBeanを編集します。クラスのためにソースを変更できません。

  • は、このBeanが別のクラスにIDによって作成されたとき、私は検出することができ、いくつかの方法があり

    • のinitメソッド
    • InitializingBean ...使用することはできません必要な変更を適用しますか?

      おかげ

  • +0

    は、通常は、コードではありませんでしただけのSpring Beanは、Springフレームワークが提供する豆です。あなたが変えたいbeensはどこから来て、どのようにインスタンス化されていますか? –

    +0

    私たちのソフトウェアは、プラットフォーム、ソリューション、実装の3つの階層構造を使用しています。変更しようとしているBeanはプラットフォームライブラリに存在し、実装レベルで作業しています。 –

    +0

    次の「私は既存の*プラットフォーム*ライブラリを変更しようとしています。私たちはすべて限界を回避しようとしましたが、次のプラットフォームリリースを待つことができませんでしたが、プラットフォームを拡張することは正しいことのようです。あなたの実装がすべてのスプリングコンテキストをロードしている場合は、 '' 'BeanPostProcessor'''を示唆的に使用できます –

    答えて

    1

    独自のカスタム・ロジックを適用する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; 
        } 
        //... 
    } 
    
    関連する問題