JSP 개발 의 Spring 방법 주입 의 교체 방법 실현

3660 단어 JSPSpring주입
JSP 개발 의 Spring 방법 주입 의 교체 방법 실현
Spring 은 교체 방법 으로 실현 되 는 체 제 를 제공 하여 우리 로 하여 금 특정한 bean 의 특정한 방법의 실현 을 바 꿀 수 있 게 한다.예 를 들 어 우 리 는 하나의 bean 이 있 는데 그 중에서 하나의 add()방법 으로 두 정수 의 합 을 계산 할 수 있 지만 이 럴 때 우 리 는 그것 의 실현 논 리 를 두 정수 의 값 이 같 으 면 곱 하 는 것 으로 바 꾸 고 싶다.그렇지 않 으 면 그것들 을 더 하 는 것 이다.원본 코드 를 바 꾸 지 않 거나 바 꿀 수 없 는 상황 에서 우 리 는 Spring 이 제공 하 는 교체 방법 으로 체 제 를 실현 하여 이 요 구 를 실현 할 수 있다.
교체 방법 실현 메커니즘 의 핵심 은 MethodReplacer 인터페이스 입 니 다.그 중에서 reimplement()방법 을 정 의 했 습 니 다.우리 의 교체 방법 이 실현 하 는 주요 논 리 는 바로 이 방법 에서 이 루어 진 것 입 니 다.
구체 적 인 정 의 는 다음 과 같다.

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;

}

reimplement()방법 은 세 개의 인 자 를 받 아들 일 것 입 니 다.그 중에서 obj 는 교체 방법 이 필요 한 bean 대상 을 표시 하고 method 는 교체 방법 이 필요 하 며 args 는 대응 하 는 방법 인 자 를 표시 합 니 다.앞에서 친 예 를 들 어 우리 가 다음 과 같은 정의 에 대응 하 는 bean 이 있다 고 가정 합 니 다.

public class BeanA {

 public int add(int a, int b) {
 return a+b;
 }
 
}
 <bean id="beanA" class="com.app.BeanA"/>
만약 에 우리 가 add()방법의 실현 을 a 와 b 가 같 을 때 곱 하고 그렇지 않 으 면 추가 할 수 있다 면 우 리 는 이 방법 에 대응 하 는 MethodReplacer 의 실현 류 를 제공 하고 구체 적 으로 다음 과 같이 실현 할 수 있다.

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

}

그 다음 에 beanA 를 정의 할 때 BeanAReplacer 를 사용 하여 beanA 를 대체 하 는 add()방법 을 지정 해 야 합 니 다.이것 은 replace-method 요 소 를 통 해 지 정 됩 니 다.두 개의 속성 을 지정 해 야 합 니 다.name 과 replace.name 은 교체 할 방법의 이름 을 지정 하고 replace 는 교체 할 MethodReplacer 에 대응 하 는 bean 을 지정 합 니 다.그래서 이때 우리 의 beanA 는 다음 과 같이 정의 해 야 한다.

<bean id="beanAReplacer" class="com.app.BeanAReplacer"/>
 <bean id="beanA" class="com.app.BeanA">
 <replaced-method name="add" replacer="beanAReplacer"/>
 </bean>
만약 에 우리 의 MethodReplacer 가 교체 할 방법 이 대응 하 는 bean 에서 과부하 형식 에 속 하 는 방법,즉 여러 가지 방법 명 이 같은 방법 이 존재 할 때 우 리 는 replaced-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>
대응 하 는 방법 이름 의 방법 이 하나만 존재 할 때 arg-type 은 작용 하지 않 습 니 다.즉,Spring 은 이때 arg-type 에 따라 대응 하 는 방법 을 바 꾸 지 않 거나 replaced-method 가 이름 을 지정 하 는 방법 이 하나만 존재 할 때 arg-type 이 어떻게 정의 하 든 상관 없습니다.
이상 은 JSP 에서 Spring 방법 을 주입 하 는 교체 방법 이 실 현 된 실례 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글로 토론 할 수 있 습 니 다.읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기