이 글은 주로 JSP 개발에서 Spring메서드 주입의 대체 메소드 구현과 관련된 JSP 정보를 소개합니다. JSP에 관심이 있는 친구들은 이 글을 참고하세요
JSP 개발에서 Spring 메소드 주입의 대체 메소드 구현
Spring은 메소드 구현을 대체하는 메커니즘을 제공하므로 특정 Bean 메소드의 구현을 변경할 수 있습니다. 예를 들어, 두 정수의 합을 계산하는 데 사용할 수 있는 add() 메소드가 있는 Bean이 있지만 이번에는 두 정수가 동일한 값을 갖는 경우 두 정수를 곱하도록 구현 로직을 변경하려고 합니다. 그렇지 않으면 add를 수행합니다. 우리는 소스 코드를 변경하거나 변경할 수 없는 상태에서 Spring이 제공하는 대체 메서드 구현 메커니즘을 통해 이 요구 사항을 달성할 수 있습니다.
대체 메서드 구현 메커니즘의 핵심은 reimplement() 메서드를 정의하는 MethodReplacer 인터페이스입니다. 대체 메서드 구현의 주요 논리는 이 메서드에서 구현됩니다.
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; }
을 나타내고, 메소드는 대체되어야 하며, args는 해당 메소드 매개변수를 나타냅니다. 이전 예제에서는 다음 클래스 정의에 해당하는 Bean이 있다고 가정합니다.
public class BeanA { public int add(int a, int b) { return a+b; } } <bean id="beanA" class="com.app.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; } } }
을 지정해야 합니다. name은 교체해야 하는 메소드의 이름을 지정하는 데 사용되며, replacementr는 교체할 MethodReplacer에 해당하는 Bean을 지정하는 데 사용됩니다. 따라서 이때 beanA는 다음과 같이 정의되어야 합니다.
<bean id="beanAReplacer" class="com.app.BeanAReplacer"/> <bean id="beanA" class="com.app.BeanA"> <replaced-method name="add" replacer="beanAReplacer"/> </bean>
유형 메소드에 속하는 경우, 즉 동일한 메소드가 여러 개 있는 경우 메소드 이름, 또한 replacement-method 요소 아래의 arg-type 요소를 통해 해당 메소드 매개변수의 유형을 정의해야 어떤 메소드를 교체해야 하는지 구별할 수 있습니다. 따라서 위의 예에서는 다음과 같이 정의할 수도 있습니다.
<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>
관련 권장 사항:
컨테이너 외부에서 JSP 페이지를 테스트하는 방법JSP를 사용하여 MySQL 데이터베이스에 연결하는 방법JSP 기본 지식 포인트 요약위 내용은 JSP 개발에서 Spring 메소드 주입의 대체 메소드 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!