ホームページ >ウェブフロントエンド >jsチュートリアル >JSP開発におけるSpringメソッドインジェクションの置換メソッド実装

JSP開発におけるSpringメソッドインジェクションの置換メソッド実装

韦小宝
韦小宝オリジナル
2018-01-18 09:53:121741ブラウズ

この記事では主にJSP開発におけるSpringメソッドインジェクションの置換メソッド実装に関するJSP情報を紹介していますので、JSPに興味のある方はぜひ参考にしてください

JSP開発におけるSpringメソッドインジェクションの置換メソッド実装


Spring はメソッド実装を置き換えるメカニズムを提供しており、これにより特定の Bean メソッドの実装を変更できます。たとえば、2 つの整数の合計を計算するために使用できる add() メソッドを備えた Bean がありますが、今回は 2 つの整数が同じ値を持つ場合は乗算し、それ以外の場合は加算するように実装ロジックを変更したいとします。 Spring が提供する置換メソッド実装メカニズムを使用すると、ソース コードを変更することなく、または変更することができずに、この要件を実現できます。

置換メソッド実装メカニズムの中核は、reimplement () メソッドを定義する MethodReplacer インターフェイスです。


具体的な定義は次のとおりです。

reimplement() メソッドが 3 つのパラメーターを受け取ることがわかります。ここで、obj は置き換える必要がある Bean

オブジェクト を表し、メソッドは置き換える必要があり、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 つの

属性、name と replacer を指定する必要があります。 name は、置換する必要があるメソッドの名前を指定するために使用され、replacer は、置換される MethodReplacer に対応する Bean を指定するために使用されます。したがって、現時点では、BeanA は次のように定義する必要があります:

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 の

overloaded タイプのメソッドに属する場合、つまり、同じメソッドを持つメソッドが複数ある場合どのメソッドを置き換える必要があるかを区別できるように、replaced-method 要素の下の arg-type 要素を通じて、対応するメソッド パラメータの型を定義する必要があります。したがって、上記の例では、次のように定義することもできます:

<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 ページをテストする方法

JSP を使用して MySQL データベースに接続する方法

JSP の基本的な知識ポイントの概要

以上がJSP開発におけるSpringメソッドインジェクションの置換メソッド実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。