ホームページ >ウェブフロントエンド >jsチュートリアル >JSP開発におけるSpringメソッドインジェクションの置換メソッド実装
この記事では主にJSP開発におけるSpringメソッドインジェクションの置換メソッド実装に関するJSP情報を紹介していますので、JSPに興味のある方はぜひ参考にしてください
JSP開発におけるSpringメソッドインジェクションの置換メソッド実装
。
Spring はメソッド実装を置き換えるメカニズムを提供しており、これにより特定の Bean メソッドの実装を変更できます。たとえば、2 つの整数の合計を計算するために使用できる add() メソッドを備えた Bean がありますが、今回は 2 つの整数が同じ値を持つ場合は乗算し、それ以外の場合は加算するように実装ロジックを変更したいとします。 Spring が提供する置換メソッド実装メカニズムを使用すると、ソース コードを変更することなく、または変更することができずに、この要件を実現できます。
具体的な定義は次のとおりです。
オブジェクト を表し、メソッドは置き換える必要があり、args は対応するメソッドのパラメーターを表します。前の例では、次のクラス定義に対応する Bean があると仮定します。
public interface MethodReplacer { /** * Reimplement the given method. * @param obj the instance we're reimplementing the method for * @param method the method to reimplement * @param args arguments to the method * @return return value for the method */ Object reimplement(Object obj, Method method, Object[] args) throws Throwable; }a と b が等しい場合はそれらを乗算し、そうでない場合は加算することで add() メソッドの実装を置き換える必要がある場合、このメソッドに対応する MethodReplacer 実装クラスを提供できます。具体的な実装は次のとおりです。
public class BeanA { public int add(int a, int b) { return a+b; } } <bean id="beanA" class="com.app.BeanA"/>次に、BeanA を定義するときに、BeanA の add() メソッド実装を置き換える BeanAReplacer の使用を指定する必要があります。これは、replaced-method 要素によって指定されます。 2 つの
public class BeanAReplacer implements MethodReplacer { /** * @param obj 对应目标对象,即beanA * @param method 对应目标方法,即add * @param args 对应目标参数,即a和b */ public Object reimplement(Object obj, Method method, Object[] args) throws Throwable { Integer a = (Integer)args[0]; Integer b = (Integer)args[1]; if (a.equals(b)) { return a * b; } else { return a + b; } } }MethodReplacer によって置き換えられるメソッドが、対応する Bean の
<bean id="beanAReplacer" class="com.app.BeanAReplacer"/> <bean id="beanA" class="com.app.BeanA"> <replaced-method name="add" replacer="beanAReplacer"/> </bean>メソッド名に対応するメソッドが 1 つしかない場合、arg-type は機能しません。つまり、Spring は、次のように対応するメソッドをフェッチしません。このときのarg-typeの置換、つまりreplacement-methodで指定した名前のメソッドが1つだけの場合はarg-typeの定義に関係なく可能です。 関連する推奨事項:
以上がJSP開発におけるSpringメソッドインジェクションの置換メソッド実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。