In diesem Artikel werden hauptsächlich JSP-Informationen zur Implementierung der Ersetzungsmethode von Spring Methodeninjektion in der JSP-Entwicklung vorgestellt. Freunde, die sich für JSP interessieren, können auf diesen Artikel
Ersetzung verweisen Methodenimplementierung der Spring-Methodeninjektion in der JSP-Entwicklung
Spring bietet einen Mechanismus für die Implementierung von Ersatzmethoden, der es uns ermöglicht, die Implementierung einer bestimmten Bean-Methode zu ändern. Zum Beispiel haben wir eine Bean mit einer add()-Methode, die zur Berechnung der Summe zweier Ganzzahlen verwendet werden kann, aber dieses Mal möchten wir ihre Implementierungslogik ändern, um die beiden Ganzzahlen zu multiplizieren, wenn sie den gleichen Wert haben. Andernfalls addieren Sie zusammen können wir diese Anforderung durch den von Spring bereitgestellten Mechanismus zur Implementierung der Ersetzungsmethode erreichen, ohne den Quellcode zu ändern oder nicht ändern zu können.
Der Kern des Ersatzmethodenimplementierungsmechanismus ist die MethodReplacer-Schnittstelle, die eine reimplement()-Methode definiert. Die Hauptlogik unserer Ersatzmethodenimplementierung ist in dieser Methode implementiert,
Die spezifische Definition lautet wie folgt:
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; }
Wir können sehen, dass die Methode reimplement() drei Parameter empfängt, wobei obj das Bean Objekt darstellt, das ersetzt werden muss , und Methode muss ersetzt werden, args repräsentiert die entsprechenden Methodenparameter. Nehmen wir für das vorherige Beispiel an, dass wir eine Bean haben, die der folgenden Klassendefinition entspricht.
public class BeanA { public int add(int a, int b) { return a+b; } } <bean id="beanA" class="com.app.BeanA"/>
Wenn wir die Implementierung der Methode add() ersetzen müssen, indem wir a und b multiplizieren, wenn sie gleich sind, andernfalls addieren, können wir eine entsprechende MethodReplacer-Implementierung für diese Methodenklasse bereitstellen Die spezifische Implementierung ist wie folgt.
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; } } }
Danach müssen Sie beim Definieren von beanA die Verwendung von BeanAReplacer zum Ersetzen der add()-Methodenimplementierung angeben. Es erfordert die Angabe von zwei -Attributen , Name und Ersetzung. Name wird verwendet, um den Namen der Methode anzugeben, die ersetzt werden muss, und replacer wird verwendet, um die Bean anzugeben, die dem zu ersetzenden MethodReplacer entspricht. Daher sollte unsere BeanA zu diesem Zeitpunkt wie folgt definiert sein:
<bean id="beanAReplacer" class="com.app.BeanAReplacer"/> <bean id="beanA" class="com.app.BeanA"> <replaced-method name="add" replacer="beanAReplacer"/> </bean>
Wenn die durch unseren MethodReplacer zu ersetzende Methode eine Methode vom Typ überladen in der entsprechenden Bean ist, Das heißt, wenn es mehrere Methoden mit demselben Methodennamen gibt, müssen wir auch den Typ des entsprechenden Methodenparameters über das Element arg-type unter dem Element replacement-method definieren, damit wir unterscheiden können, welche Methode ersetzt werden muss. Daher können wir es für das obige Beispiel auch wie folgt definieren:
<bean id="beanAReplacer" class="com.app.BeanAReplacer"/> <bean id="beanA" class="com.app.BeanA"> <replaced-method name="add" replacer="beanAReplacer"> <arg-type match="int"/> <arg-type match="int"/> </replaced-method> </bean>
Wenn nur eine Methode dem Methodennamen entspricht, funktioniert arg-type nicht, nämlich Spring Zu diesem Zeitpunkt wird arg-type nicht verwendet, um die entsprechende Methode zum Ersetzen abzurufen. Mit anderen Worten: Wenn es nur eine Methode mit dem durch replacement-method angegebenen Namen gibt, ist dies in Ordnung, unabhängig davon, wie arg-type definiert ist.
Verwandte Empfehlungen:
So testen Sie eine JSP-Seite außerhalb des Containers
So verwenden Sie JSP, um eine Verbindung zu einer MySQL-Datenbank herzustellen
Eine Zusammenfassung der JSP-Grundwissenspunkte
Das obige ist der detaillierte Inhalt vonErsatzmethodenimplementierung der Spring-Methodeninjektion in der JSP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!