【发布时间】:2011-08-27 10:38:44
【问题描述】:
我对 AspectJ 还是很陌生,并且有一个问题,尽管我无法解决一些研究。我有以下关于银行的方面,方面在每次公共方法调用后检查银行的余额是否保持。
pointcut BankCheck(Bank bank): call(public * Bank.*(..)) && target(bank);
Object around(Bank bank): BankCheck(bank) {
int balance = bank.getTotalBalance();
Object result = proceed(bank);
if (balance != bank.getTotalBalance()) {
LOGGER.warn("The total balance of the bank is not equal.");
} else {
LOGGER.info("Ok");
}
return result;
}
问题在于,在这方面我使用了 bank.getTotalBalance() 方法,它本身就是一个公共的 Bank 方法。因此,每次都会建议该方面,并且此递归问题会继续进行,直到抛出异常为止。有没有办法解决这个问题,例如关闭方面内的建议机制?
【问题讨论】: