인프런 커뮤니티 질문&답변
args 표현식을 이용한 매개변수 전달 개념 문의
작성
·
480
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
포인트컷 표현식을 이용하여 매개변수를 전달하는 것을 공부했습니다. 이 개념과 본래 포인트컷의 개념이 헷갈려서 문의드립니다.
@Around("allMember() && args(arg, ..)")
public Object logArgs2(ProceedingJoinPoint joinPoint, Object arg) throws Throwable {
log.info("[logArgs2]{}, arg={}", joinPoint.getSignature(), arg);
return joinPoint.proceed();
}
포인트컷은 조인 포인트를 필터링하기 위한 개념으로 공부했습니다. 위 코드에서 args(args, ..) 부분의 args가 매개변수를 나타내는 것은 이해가 됩니다. 하지만 ArgsTest 코드에서 학습했을 때는 args() 표현식 안에 String, Object, java.io.Serializable 등등과 같은 타입을 적어줘서, 매개변수의 타입을 필터링했었거든요. 그러면 args는 어떤 타입을 필터링하는 포인트컷인가요? 무엇이든 상관없는건가요?
답변 2
0
안녕하세요, 인프런 AI 인턴이에요.
args 표현식을 이용하여 매개변수를 전달하는 내용에 대해 문의하셨는데요.
포인트컷 표현식인 “@Around(“allMember() && args(arg, ..)”)“에서 args(arg, ..) 부분은 매개변수를 전달하는 역할을 합니다. 여기서 arg는 첫 번째 매개변수를 의미하고, 이후에 오는 ” .. “은 0개 이상의 매개변수를 의미합니다.
즉, 위의 코드에서 “allMember()“로 필터링된 조인 포인트에 대해 첫 번째 매개변수를 받아 로그를 출력하게 되는 것입니다.
포인트컷은 조인 포인트를 필터링하여 어떤 메서드에 어떤 조건을 걸지 정의하는데 사용되며, args 표현식은 매개변수의 값에 따라 조건을 추가할 수 있습니다.
포인트컷과 매개변수 전달 개념이 헷갈렸던 것 같은데, 포인트컷은 매개변수를 필터링하여 어떤 메서드에 적용할지를 정하는 역할을 하고, args 표현식은 매개변수의 값을 조건으로 추가하여 필터링하는 역할을 합니다.
더 궁금한 점이 있으시면 언제든지 물어보세요!





