이 측면은 정렬된 인터페이스를 구현하므로 트랜잭션 조언보다 더 높은 측면의 우선 순위를 설정할 수 있습니다(다시 시도할 때마다 새 트랜잭션을 원합니다). maxRetries 및 주문 속성은 모두 스프링에 의해 구성됩니다. 주요 작업은 doConcurrent조언에 관한 작업에서 발생합니다. 현재 모든 비즈니스 서비스()에 재시도 논리를 적용하고 있습니다. 우리는 진행하려고, 우리는 비관적으로 실패하는 경우LockingFailureException 우리는 단순히 우리가 우리의 재시도의 모든 소진하지 않는 한 다시 시도. 포인트컷은 조인 지점을 결정하므로 조언이 실행되는 시기를 제어할 수 있습니다. Spring AOP는 스프링 빈에 대한 메서드 실행 조인 점만 지원하므로 포인트 컷은 스프링 빈의 메서드 실행과 일치하는 것으로 생각할 수 있습니다. pointcut 선언에는 이름과 매개 변수를 포함하는 서명과 관심 있는 메서드 실행을 정확히 결정하는 포인트컷 식의 두 부분으로 구성됩니다. AOP의 @AspectJ 어음 스타일에서 포인트컷 시그니처는 일반 메서드 정의에 의해 제공되며 포인트컷 식은 @Pointcut 개의 어노런을 사용하여 표시됩니다(포인트컷 시그니처로 게재되는 메서드는 void 반환 형식이 있어야 합니다). 위의 예제에서는 object 형식의 한 인수를 취하고 해당 값에 로그인하는 afterReturn이라는 메서드가있는 간단한 Java 클래스를 정의했습니다. 심지어 우리의 AdderAfterReturnAspect표준 클래스, 어떤 스프링 주석의 무료. Spring AOP는 메서드 실행 조인 점에만 일치를 제한하기 때문에 위의 포인트컷 지정자에 대한 설명은 AspectJ 프로그래밍 가이드에서 찾을 수 있는 것보다 더 좁은 정의를 제공합니다. 또한 AspectJ 자체에는 형식 기반 의미 체계가 있으며 실행 조인 점에서 `this`와 `target`은 메서드를 실행하는 개체와 동일한 개체를 참조합니다.

Spring AOP는 프록시 기반 시스템이며 프록시 개체 자체(`this`에 바인딩)와 프록시 뒤에 있는 대상 개체(`target`에 바인딩)를 구분합니다. 좋은 예입니다. 간단하고 투 – 포인트. AOP를 시작하는 데 도움이되었습니다. 우리는 이미 스프링 종속성 주입이 어떻게 작동하는지 보았으며, 오늘 우리는 Aspect 지향 프로그래밍의 핵심 개념과 스프링 프레임 워크를 사용하여 구현 할 수있는 방법을 살펴 볼 것입니다. Spring AOP는 추가 기능 기반 구성을 사용하여 여러 조언을 지원합니다. 이 예제는 정말 간단하지만 효과적입니다. 그러나 서비스 클래스의 특정 메서드에 대해서만 프록시를 호출 할 수있는 방법이 있는지 알고 싶습니다. 대상 개체에 @Transactional 개의 @Transactional 개의 부포가 있는 모든 조인 점(스프링 AOP에서만 메서드 실행) : 조언 호출에서 매개 변수 바인딩은 pointcut 식에 사용되는 일치 하는 이름을 사용하여 선언 된 매개 변수 이름(조언 및 pointcut)을 사용합니다. 메서드 시그니처를 선택합니다. 매개 변수 이름은 Java 리플렉션을 통해 사용할 수 없으므로 Spring AOP는 다음 전략을 사용하여 매개 변수 이름을 결정합니다.

다음 예제에서는 `transfer`라는 메서드의 실행과 일치하는 `anyOldTransfer`라는 포인트컷을 정의합니다. 다른 유형의 조언도 마찬가지입니다. aspectJ 어노션에 대한 코드를 구성하는 방법입니다.