Конечно, вы можете, рекомендуемый способ сделать это;использует ِ Аспектно-ориентированное программирование AOP , которое предоставит вам всю необходимую информацию о намеченном JointPoint;в вашем случае это будет метод, вызываемый внутри контроллера.
Проверьте этот пример Spring Boot AOP , а также лучше запачкать руку этими классами ProceedingJoinPoint и JointPoint
Чтобы упростить его, вы можете использовать этот класс JointPoint для получения сигнатуры метода и, конечно, его параметров, для каждого параметра у вас также есть тип(который вы ищете), кроме того, вы можете использовать сам параметр для выполнения любой логики, которая вам нужна. проверьте следующее
@Aspect
@Component
public class SomeAspect {
@Around("@annotation(SomeAnnotation)")
public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
CodeSignature codeSignature = (CodeSignature) joinPoint.getSignature();
System.out.println("Parameters' Types: " + codeSignature.getParameterTypes);
System.out.println("Parameters' name: " + codeSignature.getParameterNames()[0]);
System.out.println("Arguments' value: " + joinPoint.getArgs());
return joinPoint.proceed();
}
}
Другой способ, который может помочь вам в вашем коде, - это использование чистого отражения и пользовательских аннотаций. Таким образом, вы также можете получить все детали из класса вашего запроса,но это может потребовать еще немного кода.