Maison > interface Web > js tutoriel > le corps du texte

Implémentation de la méthode de remplacement de l'injection de la méthode Spring dans le développement JSP

韦小宝
Libérer: 2018-01-18 09:53:12
original
1698 Les gens l'ont consulté

Cet article présente principalement des informations JSP liées à l'implémentation de la méthode de remplacement de Spring injection de méthode dans le développement JSP. Les amis intéressés par JSP peuvent se référer à cet article

Remplacement. implémentation de la méthode d'injection de méthode Spring dans le développement JSP

Spring fournit un mécanisme d'implémentation de méthode de remplacement, qui nous permet de modifier l'implémentation d'une certaine méthode de bean. Par exemple, nous avons un bean avec une méthode add() qui peut être utilisée pour calculer la somme de deux entiers, mais cette fois nous voulons changer sa logique d'implémentation pour multiplier les deux entiers s'ils ont la même valeur. Sinon, ajoutez. ensemble.Nous pouvons atteindre cette exigence grâce au mécanisme d'implémentation de la méthode de remplacement fourni par Spring sans modifier ou être incapable de modifier le code source.

Le cœur du mécanisme d'implémentation de la méthode de remplacement est l'interface MethodReplacer, qui définit une méthode reimplement () La logique principale de l'implémentation de notre méthode de remplacement est implémentée dans cette méthode,

. La définition spécifique est la suivante :

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;

}
Copier après la connexion

Nous pouvons voir que la méthode reimplement() recevra trois paramètres, où obj représente le bean objet qui doit être remplacé , et la méthode doit être remplacée par la méthode, args représente les paramètres de la méthode correspondants. Pour l’exemple précédent, supposons que nous ayons un bean correspondant à la définition de classe suivante.

public class BeanA {

 public int add(int a, int b) {
 return a+b;
 }
 
}
 <bean id="beanA" class="com.app.BeanA"/>
Copier après la connexion

Si nous devons remplacer l'implémentation de la méthode add() en multipliant a et b lorsqu'ils sont égaux, sinon en les ajoutant, nous pouvons fournir une implémentation MethodReplacer correspondante pour cette classe de méthode , la mise en œuvre spécifique est la suivante.

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;
 }
 }

}
Copier après la connexion

Après cela, vous devez spécifier l'utilisation de BeanAReplacer pour remplacer l'implémentation de la méthode add() de beanA lors de la définition de beanA. Ceci est spécifié via l'élément de méthode remplacée. Cela nécessite de spécifier deux attributs , name et replacer. name est utilisé pour spécifier le nom de la méthode qui doit être remplacée, et replacer est utilisé pour spécifier le bean correspondant au MethodReplacer à remplacer. Par conséquent, à ce stade, notre beanA doit être défini comme suit :

<bean id="beanAReplacer" class="com.app.BeanAReplacer"/>
 <bean id="beanA" class="com.app.BeanA">
 <replaced-method name="add" replacer="beanAReplacer"/>
 </bean>
Copier après la connexion

Si la méthode à remplacer par notre MethodReplacer est une méthode de type surchargée dans le bean correspondant, c'est-à-dire lorsqu'il existe plusieurs méthodes avec le même nom de méthode, nous devons également définir le type du paramètre de méthode correspondant via l'élément arg-type sous l'élément replace-method, afin que nous puissions distinguer quelle méthode doit être remplacée. Par conséquent, pour l'exemple ci-dessus, nous pouvons également le définir comme suit :

<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>
Copier après la connexion

Lorsqu'il n'y a qu'une seule méthode correspondant au nom de la méthode, arg-type ne fonctionnera pas, c'est-à-dire Spring n'utilisera pas arg pour le moment -type pour obtenir la méthode de remplacement correspondante, ou en d'autres termes, lorsqu'il n'y a qu'une seule méthode avec le nom spécifié par la méthode remplacée, c'est OK quelle que soit la façon dont arg-type est défini.

Recommandations associées :

Comment tester les pages JSP en dehors du conteneur

Comment utiliser JSP pour se connecter à la base de données MySQL

Un résumé des points de connaissances de base de JSP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!