package com.example.spring.aop.security; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; @Aspect public class AccessChecker { /* * In-place pointcut expressions are used here (i.e. the pointcut * expression is just declared with the advice directly rather than * elsewhere). */ // @Before("execution(public * com.example.spring.aop.Account.deposit(..))") // public void checkDepositPermission() { // System.out.println("Aspect is checking deposit permission..."); // } // // @After("execution(public * com.example.spring.aop.Account.deposit(..))") // public void checkDepositPermissionAfterDemo() { // System.out.println("checkDepositPermissionAfterDemo()"); // } // // @Before("execution(public * com.example.spring.aop.Account.withdraw(..)) && args(amount)") // public void checkWithdrawPermission(double amount) { // System.out.println("Aspect is checking withdraw permission for " + amount); // if (amount > 1000.0) { // throw new AccessException("Withdrawing more than 1000.0 is not allowed."); // } // } @Before("MyPointcuts.abc()") public void checkDepositPermission() { System.out.println("Aspect is checking deposit permission..."); } @Before("MyPointcuts.checkWithAmount(amount)") public void checkWithdrawPermission(double amount) { System.out.println("Aspect is checking withdraw permission for " + amount); if (amount > 1000.0) { throw new AccessException("Withdrawing more than 1000.0 is not allowed."); } } @Before("MyPointcuts.depositAndWithdraw()") public void depositAndWithdraw() { System.out.println("depositAndWithdraw()"); } }