aop 예제

다음 예제에서는 Spring AOP 조언이 어떻게 작동하는지 보여 준다. 이러한 측면에 정의된 포인트컷은 포인트컷 식이 필요한 모든 곳에서 참조할 수 있습니다. 예를 들어 서비스 계층을 트랜잭션으로 만들려면 이제 판매 피치가 끝났으니 먼저 Spring을 사용하는 AspectJ LTW의 간단한 예제를 살펴보고 다음 예제에서 소개된 요소에 대한 자세한 세부 사항을 살펴보겠습니다. 전체 예제는 Petclinic 샘플 응용 프로그램을 참조하십시오. 우리는 스프링 AOP 및 AspectJ에서 일관되게 작동하는 인수로 진행 호출을 작성하는 방법을 설명 할 것이라고 이전에 언급했습니다. 해결책은 조언 시그니처가 각 메서드 매개 변수를 순서대로 바인딩하도록 하는 것입니다. 예: 이제 프로그램 실행 전후에 조언이 어떻게 발생하는지 이해하는 예제를 살펴보겠습니다. 먼저 메서드 실행 전에 어떻게 발생하는지 살펴보겠습니다. MethodBeforeAdvice 인터페이스를 구현하는 클래스를 만들어 보겠습니다. 측면: 여러 클래스에 걸쳐 잘라 우려의 모듈화.

트랜잭션 관리는 J2EE 응용 프로그램에서 교차 절삭 문제의 좋은 예입니다. Spring AOP에서 측면은 @Aspect(@AspectJ 스타일)에 추가된 일반 클래스(스키마 기반 접근 방식) 또는 일반 클래스를 사용하여 구현됩니다. 스프링 AOP(가로 세로 지향 프로그래밍) 프레임워크는 측면에서 교차 절단 문제를 모듈화하는 데 사용됩니다. 간단히 말해서, 메서드가 실행될 때 Spring AOP가 실행 메서드를 하이재킹하고 메서드 실행 전후에 추가 기능을 추가할 수 있는 경우와 같은 일부 프로세스를 가로채는 인터셉터일 뿐입니다. 이것은 봄에 측면 지향 프로그래밍의 예입니다. 이 자습서의 이클립스 프로젝트 다운로드 : SpringAOPExample.zip 포인트컷은 스프링 AOP의 표현 언어입니다. @Pointcut 어구는 포인트컷을 정의합니다. 여기서는 포인트컷 식을 그 이름으로 참조할 수도 있습니다.

간단한 예를 살펴보겠습니다. @AspectJ 지원이 활성화되면 응용 프로그램 컨텍스트에 정의된 @AspectJ(@Aspect 개의 있음)이 있는 클래스에 정의된 모든 Bean이 Spring에서 자동으로 감지되고 Spring AOP를 구성하는 데 사용됩니다. 다음 예제에서는 매우 유용하지 않은 측면에 필요한 최소한의 정의를 보여 주며, Spring AOP는 추가 기능 기반 구성을 사용하여 여러 조언을 지원합니다. CGLIB 프록시를 강제로 사용하려는 경우(예: 대상 개체에 대해 정의된 모든 메서드를 프록시하는 경우, 인터페이스에 의해 구현된 메서드뿐만 아니라). 그러나 고려해야 할 몇 가지 문제가 있습니다: 훌륭한 기사. 나는 몇 가지 질문이 있습니다. 나는 자동화 된 테스터이고 나는 종종 트랜잭션 방법을 만들 , 그것은 의미, 나는 몇 가지 쿼리 및 닫기 연결을 호출하고 예를 들어 ResultStatment를 호출 다음 데이터베이스에 대한 연결을 만들 수 있습니다. 많은 클래스에서 발생하기 때문에 추가로 닫고 싶습니다. 문제는 이 연결 및 결과 문이 로컬 값이라는 것입니다. 그것은 가능 ? @DeclareParents 어노런을 사용하여 소개합니다.

이 추가는 일치하는 형식에 새 부모(따라서 이름)가 있음을 선언하는 데 사용됩니다. 예를 들어, 인터페이스 UsageTracked 및 해당 인터페이스의 구현을 감안할 때 DefaultUsageTracked, 다음 측면은 서비스 인터페이스의 모든 구현자도 UsageTracked 인터페이스를 구현 하는 것을 선언 합니다. (예를 들어 JMX를 통해 통계를 노출하기 위해). 이제 예제를 다시 실행한 후 doAfterThrowingExceptionMethod에서 checkName() 메서드만 가로채는 것을 볼 수 있습니다. 구현할 인터페이스는 추가된 필드의 유형에 따라 결정됩니다. @DeclareParents 부호의 값 특성은 AspectJ 형식 패턴입니다 :- 일치하는 형식의 모든 bean은 UsageTracked 인터페이스를 구현합니다. 위의 예제의 이전 조언에서 서비스 빈은 UsageTracked 인터페이스의 구현으로 직접 사용할 수 있습니다.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies