|
public void callAtMyServiceAnnotation
|
səhifə | 3/5 | tarix | 24.12.2023 | ölçüsü | 100,61 Kb. | | #191065 |
| 10-amaliy mashg\'ulot
public void callAtMyServiceAnnotation() { }
Advice для него
@Before("callAtMyServiceAnnotation()")
public void beforeCallAt() { }
Запрос на конкретный метод с указанием параметров целевого метода
@Pointcut("execution(* com.example.demoAspects.MyService.method1(..)) && args(list,..))")
public void callAtMyServiceMethod1(List list) { }
Advice для него
@Before("callAtMyServiceMethod1(list)")
public void beforeCallAtMethod1(List list) { }
Pointcut для результата возврата
@Pointcut("execution(* com.example.demoAspects.MyService.check())")
public void callAtMyServiceAfterReturning() { }
Advice для него
@AfterReturning(pointcut="callAtMyServiceAfterReturning()", returning="retVal")
public void afterReturningCallAt(boolean retVal) { }
Пример проверки прав на Advice типа Around, через аннотацию
@Retention(RUNTIME)
@Target(METHOD)
public @interface SecurityAnnotation {
}
//
@Aspect
@Component
public class MyAspect {
@Pointcut("@annotation(SecurityAnnotation) && args(user,..)")
public void callAtMyServiceSecurityAnnotation(User user) { }
@Around("callAtMyServiceSecurityAnnotation(user)")
public Object aroundCallAt(ProceedingJoinPoint pjp, User user) {
Object retVal = null;
if (securityService.checkRight(user)) {
retVal = pjp.proceed();
}
return retVal;
}
Методы которые необходимо проверять перед вызовом, на право, можно аннотировать «SecurityAnnotation», далее в Aspect получим их срез, и все они будут перехвачены перед вызовом и сделана проверка прав.
Целевой код:
@Service
Dostları ilə paylaş: |
|
|