Эта документация должна быть чрезвычайно полезной.
Я бы сделал, создав два отдельных точечных разреза, один для всех открытых методов и один для всех классов, аннотированных @Service, а затемсоздайте третий, который объединяет выражения pointcut двух других.
Взгляните на ( 7.2.3.1 Поддерживаемые указатели Pointcut ), для которых используются указатели.Я думаю, что вы после указателя «выполнение» для поиска открытых методов и указатель «аннотации» для поиска вашей аннотации.
Затем взгляните на ( 7.2.3.2 Объединение выражений pointcut ) для их объединения.
Ниже приведен некоторый код (который я не проверял ).В основном это взято из документации.
@Pointcut("execution(public * *(..))") //this should work for the public pointcut
private void anyPublicOperation() {}
//@Pointcut("@annotation(Service)") this might still work, but try 'within' instead
@Pointcut("@within(Service)") //this should work for the annotation service pointcut
private void inTrading() {}
@Pointcut("anyPublicOperation() && inTrading()")
private void tradingOperation() {}