[SPRING] 일반 인터페이스에서 작동하지 않는 Pointcut
SPRING일반 인터페이스에서 작동하지 않는 Pointcut
저는 Spring 프레임 워크 (2.5)를 사용하고 있으며 AOP 기능입니다. 나는 pointcut 표현식을 가지고있다.
@Pointcut("execution(public * org.springframework.batch.item.ItemReader+.read(..))")
public void itemReaderMethods() {}
ItemReader 인터페이스가 Spring 인터페이스이고 서명은 다음과 같습니다.
org.springframework.batch.item.ItemReader<T>
인터페이스에는 'read'라는 메서드가 있는데,이 메서드에 대한 조언을 적용합니다. 메서드 서명은 다음과 같습니다.
org.springframework.batch.item.ItemReader.read()
그러나, 위의 pointcut 표현식을 사용하여 응용 프로그램을 실행할 때 아래 예외가 발생합니다.
java.lang.IllegalArgumentException :이 유형 이름과 일치하는 경고 없음 : org.springframework.batch.item.ItemReader [Xlint : invalidAbsoluteTypeName]
내 생각 엔 ItemReader는 제네릭 인터페이스이므로 pointcut이 제대로 매치되지 않는다. 그렇다면 제네릭 인터페이스와 일치하도록 내 포인트 컷 식을 어떻게 작성할 수 있습니까?
해결법
-
==============================
1.Generics는 나에게 문제가되지 않는 것 같습니다. Map 작업에서 테스트 포인트 컷을 만들 수 있습니다.
Generics는 나에게 문제가되지 않는 것 같습니다. Map 작업에서 테스트 포인트 컷을 만들 수 있습니다.
@Around(value="execution(* java.util.Map.size(..))")
Map +를 사용할 필요가 없었습니다 (인터페이스를 사용하고 있기 때문에 가정합니다).지도의 일반적인 특성도 중요하지 않습니다.
ItemReader 인터페이스 클래스가 사용 가능하고 구현을 사용할 수 있습니까? 그게 오류 메시지가 제안하는 것입니다 (그리고 테스트 포인트 컷트에 더미 클래스 이름을 넣으면 얻을 수 있습니다). 어쩌면 로깅 / 인쇄 시도
Class.forName("org.springframework.batch.item.ItemReader")
예상되는 구현 클래스에 대해서도 비슷합니까?
from https://stackoverflow.com/questions/1131910/pointcut-not-working-for-generic-interface by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring에로드 된 Props 파일의 속성에 대해 후행 공백을 자동으로 자릅니다. (0) | 2019.05.19 |
---|---|
[SPRING] Spring aspect를 이용한 컴파일 타임 코드 계측을위한 Ant 타겟 (0) | 2019.05.19 |
[SPRING] 클러스터 환경에서의 스프링 배치 - Websphere (0) | 2019.05.19 |
[SPRING] HTTP 상태 415 - POST를 수행 할 때 지원되지 않는 미디어 유형 (0) | 2019.05.19 |
[SPRING] 나는 서버에서 파일을 저장하지 않고 봄 mvc에서 아약스를 통해 파일을 다운로드 할 수 없다 [중복] (0) | 2019.05.18 |