>  기사  >  Java  >  Spring 프레임워크 학습(6) AOP

Spring 프레임워크 학습(6) AOP

黄舟
黄舟원래의
2016-12-29 13:21:021293검색

AOP(Aspect-Oriented 프로그래밍) 관점 지향 프로그래밍은 OOP와 완전히 다릅니다. AOP를 사용하면 프로그래밍 시스템이 OOP의 객체가 아닌 관점 또는 관심사로 구분됩니다.

AOP 소개

OOP 객체지향을 사용하면 코드 중복이 불가피하며, 객체지향 프로그래밍을 사용하면 이러한 중복을 피할 수 없습니다. 예를 들어, 사용자 권한을 판단할 때 해당 권한에 따라 해당 메소드를 실행하십시오. 서블릿에서 인코딩 형식을 설정할 때 동일한 코드가 여러 번 나타나므로 작성하는 것을 잊어버리기 쉽습니다. 잘못된 코드를 실행하면 결과가 나타납니다. 이러한 코드 중복은 코딩을 번거롭게 할 뿐만 아니라 유지 관리도 어렵게 만듭니다. AOP는 이러한 코드를 정리하고, 특정 측면의 문제를 해결하는 코드를 특정 모듈에 별도로 넣은 후 프로그램에 엮어냅니다.

AOP 용어

Spring 프레임워크 학습(6) AOP

Aspect: 크로스커팅 기능,
추상 클래스 또는 인터페이스, AOP 프로그래밍에서 중요한 것은 교차 기능이 식별됩니다.
(측면, 문자 인코딩 기능과 유사)
조언: 크로스커팅 기능의 구체적인 구현은 대상 객체가 동작하기 전인지, 동작한 후인지를 토대로 분석해야 합니다. 수술 후
조언입니다.
(향상, 문자 인코딩 필터와 유사)
포인트컷: 진입점, 크로스커팅 기능 적용의 한계를 설명하며, 모든 프로세스가 필요한 것은 아니며, 사용할 수 있는 프로세스가 진입점이다
(유사) 필터 일치 규칙 /*)
Joinpoint: 연결 지점 또는 구성 요소가 속성 설정, 메서드 호출 등과 같은 프로세스에 조인하는 시간입니다. Spring은 메서드 호출에 대한 연결 지점만 지원하는 반면 일부 다른 프레임워크는 연결 속성을 지원합니다. AspectJ,
(필터 REQUEST, FORWARD와 유사한 필터 규칙)
Weave: 스티칭(Stitching), 비즈니스 프로세스에 구성 요소를 적용하는 프로세스를 스티칭(Stitching) 또는 위빙(Weaving)이라고 합니다.
(웹에 필터를 구성하는 과정과 유사합니다. CGLIB를 사용할 수 있습니다. (상속을 사용하여 프록시 작업이 완료됩니다.)
비즈니스 운영의 대상, 대상, 실제 객체


예: 문자 인코딩 형식을 설정하는 것은 Aspect로 간주되고, 인터셉터는 Advice Enhancement로 간주됩니다.

<!-- 字符编码过滤器-->
<filter>
<filter-name>characterFilter</filter-name>
<filter-class>com.bjpowernode.egov.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>characterFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
필터 클래스

public class CharacterEncodingFilter implements Filter {
 
   @Override
   public void destroy() {}
 
   @Override
   public void doFilter(ServletRequest request, ServletResponse response,
      FilterChainchain) throws IOException, ServletException {
           request.setCharacterEncoding("GB18030");
           chain.doFilter(request,response);
   }
 
   @Override
   publicvoid init(FilterConfig filterConfig) throws ServletException {}
}
이렇게 하면 각 서블릿에서 인코딩을 설정할 필요가 없습니다. .



스프링 프레임워크에서 AOP 사용

1, jar 패키지 복사

Spring 프레임워크 학습(6) AOP

2, 스프링 구성 파일에서 네임스페이스 및 제약 조건 파일 추가

aop 기능 활성화: 태그를 추가하기만 하면 가져올 수 있습니다.

Spring 프레임워크 학습(6) AOP

3, 프록시 클래스와 확장 클래스 작성

Spring 프레임워크 학습(6) AOP

4, 구성 파일에 선언됨

<!--声明目标类-->
<bean id="targetclass" class="com.spring.aop.TargetClass"></bean>

<!--声明扩展类-->
<bean id="extendsclass" class="com.spring.aop.extendsClass"></bean>

<!--织入扩展类,并声明在哪个方法上执行扩展类-->
<aop:config>
	<aop:aspect id="extendAspect" ref="">
		<aop:pointcut expression="execution(public ** (..))" id="extendsPoincat">
		<!--在目标方法执行前执行的方法-->
		<aop:before method="beforemethod" pointcut-ref="extendsPoincat" />
		<!--在目标方法执行后执行的方法-->
		<aop:after method="aftermethod" pointcut-ref="extendsPoincat" />
	</aop:aspect>
</aop:config>
5.

테스트가 성공하면 대상 클래스의 대상 메서드 targetmethod()를 실행할 때 확장 클래스의 beforemethod() 메서드가 먼저 실행된 다음 대상 메서드가 실행됩니다. , 그리고 마지막으로 () 메소드입니다.

즉, 확장 클래스의 두 메서드 프레임워크는 실행 중에 구성 파일을 읽고 해당 정보를 얻은 다음 확장 메서드를 자동으로 추가하기만 하면 됩니다. .
이 테스트는 확실히 성공했습니다. 믿을 수 없다면 직접 시도해 보세요.

Spring 프레임워크에서 AOP를 사용할 때의 장점

Aop는 Spring의 IOC 컨테이너와 통합되어 향상되었으며 진입점은 모두 Javabean이므로 동일한 파일에서 구성할 수 있습니다.
Spring의 다른 부분과 마찬가지로 , 서로 다른 애플리케이션 서버 간 이식 가능
Spring은 Aop의 가로채기 인터페이스를 구현하므로 사용자가 특정 가로채기 인터페이스에 바인딩할 필요가 없습니다.

Aop의 측면 지향 프로그래밍 아이디어는 객체 지향 방식을 깨뜨립니다. 우리가 배워야 할 것은 AOP의 사용법뿐만 아니라 측면지향적 사고도 배워야 합니다.

위 내용은 Spring Framework 학습(6) AOP 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.