AspectJ - 为什么将交易控制置于单独的和平中?

时间:2011-05-08 09:22:46

标签: aop aspectj

好的,我还没有完全理解为什么AOP AspectJ有益的理念。我现在已经实现了日志记录和交易控制,以便从银行账户中提取资金。好吧,为什么这样做很好?我同样可以在同一个类文件中实现控件,我也存储了所有的银行业务方法(提款,存款,余额......等)。记录我可以为它创建一个新类,然后在BankAccount类中创建它的实例。

那么为什么我需要使用AOP,AspectJ呢?我还没有完全理解这个想法......

这是我的方面文件

public aspect SafeWithdrawal {                                                                                  

pointcut checking(BankAccount bk, float x): execution(* BankAccount.withdraw(float)) && target(bk) && args(x);                                                                                                   

public static void BankAccount.LogChange(String str){                                                    
    System.out.println(str);                                                                             
}                                                                                                        


before(BankAccount b, float x) : checking(b, x) {
        if(b.getBalance() >= x) {
            BankAccount.LogChange("Account changing. $" + x + " withdrawn...");
        } else {               
            BankAccount.LogChange("Account does not have. $" + x + " to withdrawn...");
        }

}                                                                                                        

}  

1 个答案:

答案 0 :(得分:2)

我们的想法是,您的域名方法(如撤销)可以专注于您的业务流程,而日志,交易,分析等次要问题不会妨碍您。