最终通知
在调用目标对象的方法之后执行切面方法


代码片段
java
package com.hk.eshop.aop;
import com.hk.eshop.java.IUserMng;
public class UserMng{
public String save(String id, String name) {
System.out.println("save() id="+id+",name="+name);
return "save() id="+id+",name="+name;
}
public String find(String id) {
System.out.println("find() id="+id);
return "find() id="+id;
}
}
package com.hk.eshop.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.Signature;
public class AuditAspect {
public void audit(JoinPoint joinPoint)
{
Object[] args = joinPoint.getArgs();
Signature sig = joinPoint.getSignature();
System.out.println("触发方法......"+sig.getName());
System.out.println("方法审计开始......");
for(int i=1;i<=args.length;i++)
System.out.println("第"+i+"个参数="+args[i-1]);
System.out.println("方法审计结束......");
System.out.println("切入点表达式......"+joinPoint.toString());
}
}

环绕通知
在调用目标对象的方法之前或之后执行切面方法。







代码片段
java
package com.hk.eshop.aop;
public class OrgMng {
public String save(String id, String name){
System.out.println("save() id="+id+",name="+name);
return "save() id="+id+",name="+name;
}
public String find(String id){
System.out.println("find() id="+id);
return "find() id="+id;
}
}
package com.hk.eshop.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
public class AuditOrgAspect {
public void audit(ProceedingJoinPoint joinPoint)
{
Object[] args = joinPoint.getArgs();
Signature sig = joinPoint.getSignature();
System.out.println("触发方法......"+sig.getName());
System.out.println("方法审计开始......");
for(int i=1;i<=args.length;i++)
System.out.println("第"+i+"个参数="+args[i-1]);
Object value = null;
try
{
value = joinPoint.proceed(args);
System.out.println("value......"+value);
}
catch (Throwable e)
{
e.printStackTrace();
}
System.out.println("方法审计结束......");
System.out.println("切入点表达式......"+joinPoint.toString());
}
}
package com.hk.eshop.aop;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main( String[] args )
{
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
System.out.println("#####################最终通知#######################");
UserMng umng = (UserMng)ctx.getBean("userMng");
umng.save("1","Java");
umng.find("2");
System.out.println("#####################环绕通知#######################");
OrgMng omng = (OrgMng) ctx.getBean("orgMng");
omng.save("root", "Java");
omng.find("root");
}
}