spring core aop : pointcut - execution
This commit is contained in:
@@ -8,6 +8,8 @@ import org.springframework.aop.aspectj.AspectJExpressionPointcut;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@Slf4j
|
||||
public class ExecutionTest {
|
||||
|
||||
@@ -24,4 +26,161 @@ public class ExecutionTest {
|
||||
// public java.lang.String com.example.aop.member.MemberServiceImpl.hello(java.lang.String)
|
||||
log.info("helloMethod={}", helloMethod);
|
||||
}
|
||||
|
||||
@Test
|
||||
void exactMatch() {
|
||||
// public java.lang.String com.example.aop.member.MemberServiceImpl.hello(java.lang.String)
|
||||
pointcut.setExpression("execution(public String com.example.aop.member.MemberServiceImpl.hello(String))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void allMatch() {
|
||||
pointcut.setExpression("execution(* *(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void nameMatch() {
|
||||
pointcut.setExpression("execution(* hello(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void nameMatchPattern1() {
|
||||
pointcut.setExpression("execution(* hel*(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void nameMatchPattern2() {
|
||||
pointcut.setExpression("execution(* *el*(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void nameMatchFalse() {
|
||||
pointcut.setExpression("execution(* nono(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void packageExactMatch1() {
|
||||
pointcut.setExpression("execution(* com.example.aop.member.MemberServiceImpl.hello(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void packageExactMatch2() {
|
||||
pointcut.setExpression("execution(* com.example.aop.member.*.*(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void packageExactFalse() {
|
||||
pointcut.setExpression("execution(* com.example.aop.*.*(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
void subPackageMatch1() {
|
||||
pointcut.setExpression("execution(* com.example.aop.member..*.*(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
@Test
|
||||
void subPackageMatch2() {
|
||||
pointcut.setExpression("execution(* com.example.aop..*.*(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void typeExactMatch() {
|
||||
pointcut.setExpression("execution(* com.example.aop.member.MemberServiceImpl.*(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void superTypeMatch() {
|
||||
pointcut.setExpression("execution(* com.example.aop.member.MemberService.*(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void typeMatchInternal() throws NoSuchMethodException {
|
||||
pointcut.setExpression("execution(* com.example.aop.member.MemberServiceImpl.*(..))");
|
||||
|
||||
Method internalMethod = MemberServiceImpl.class.getMethod("internal", String.class);
|
||||
assertThat(pointcut.matches(internalMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
void typeMatchNoSuperTypeMethodFalse() throws NoSuchMethodException {
|
||||
pointcut.setExpression("execution(* com.example.aop.member.MemberService.*(..))");
|
||||
|
||||
Method internalMethod = MemberServiceImpl.class.getMethod("internal", String.class);
|
||||
assertThat(pointcut.matches(internalMethod, MemberServiceImpl.class)).isFalse();
|
||||
}
|
||||
|
||||
/**
|
||||
* String 타입의 파라미터 허용
|
||||
*/
|
||||
@Test
|
||||
void argsMatch() {
|
||||
pointcut.setExpression("execution(* *(String))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 파라미터가 없어야 함
|
||||
*/
|
||||
@Test
|
||||
void argsMatchNoArgs() {
|
||||
pointcut.setExpression("execution(* *())");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isFalse();
|
||||
}
|
||||
|
||||
/**
|
||||
* 정확히 하나의 파라미터 허용, 모든타입 허용
|
||||
*/
|
||||
@Test
|
||||
void argsMatchStar() {
|
||||
pointcut.setExpression("execution(* *(*))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
/**
|
||||
* 개수와 무관하게 모든 파라미터, 모든타입 허용
|
||||
*/
|
||||
@Test
|
||||
void argsMatchAll() {
|
||||
pointcut.setExpression("execution(* *(..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
|
||||
/**
|
||||
* String 타입으로 시작, 개수와 무관하게 모든 파라미터, 모든타입 허용
|
||||
*/
|
||||
@Test
|
||||
void argsMatchComplex() {
|
||||
pointcut.setExpression("execution(* *(String, ..))");
|
||||
|
||||
assertThat(pointcut.matches(helloMethod, MemberServiceImpl.class)).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user