Мне нужно создать аспект с pointcut, соответствующий методу, если:
- Является общедоступным
- Его класс аннотируется с помощью @Controller (в конце концов не)
- Один из его параметров (может иметь много) аннотируется с помощью @MyParamAnnotation.
Я думаю, что первые два условия легки, но я не знаю, можно ли выполнить третий с помощью Spring. Если это не так, возможно, я могу изменить его на:
- Один из его параметров - это экземпляр типа com.me.MyType(или реализует некоторый интерфейс)
Считаете ли вы возможным достичь этого? И будет ли производительность хорошей?
Спасибо
EDIT. Один пример метода сопоставления. Как вы можете видеть, MyMethod не аннотируется (но может быть).
@Controller
public class MyClass {
public void MyMethod (String arg0, @MyParamAnnotation Object arg1, Long arg3) {
...
}
}
EDIT. Решение, которое я, наконец, использовал на основе ответов @Espen. Как вы можете видеть, я немного изменил условия: класс фактически не должен быть @Controller.
@Around("execution(public * * (.., @SessionInject (*), ..))")
public void methodAround(JoinPoint joinPoint) throws Exception {
...
}