Вот пример того, что я сделал.
При добавлении знака + также перехватываются классы, которые реализуют мой репозиторий или любой другой из моих интерфейсов в com.example. **.
@Slf4j
@Component
@Aspect
public class MethodLogger {
@Before("execution(* com.example.*..*+.*(..))")
public void beforeMethod(JoinPoint joinPoint) throws Throwable {
log.info("Class******" + joinPoint.getTarget().getClass().getName());
for (Class<?> theinterface: joinPoint.getTarget().getClass().getInterfaces()) {
log.info("Interfaces******" + theinterface.getName());
}
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
log.info("Method******" + signature.getName());
Object[] args = joinPoint.getArgs();
String[] parameterNames = signature.getParameterNames();
if (parameterNames != null) {
for (int i = 0; i < parameterNames.length; i++) {
log.info("parameterNames******" + parameterNames[i] + ":" + args[i]);
}
}
}
}
Имена параметров также регистрируются:
Class******com.sun.proxy.$Proxy87
Interfaces******com.example.demoaspectmethodlogging.control.EmployeeRepository
Interfaces******org.springframework.data.repository.Repository
Interfaces******org.springframework.transaction.interceptor.TransactionalProxy
Interfaces******org.springframework.aop.framework.Advised
Interfaces******org.springframework.core.DecoratingProxy
Method******findByName
parameterNames******name:Simon