Around增强处理是一种功能比较强大的增强处理,近似于Before和AfterReturning增强处理的总和.Aound增强处理既可以在执行目标方法之前织入增强工作,也可以在执行目标之后织入增强工作
当定义一个Around增强处理方法时,该方法的第一个参数必须是ProceedingjoinPoint类型(至少包含一个形参,在增强的方法体内,调用ProceedingjoinPoint的proceed()方法才会执行目标方法,如果程序没有调用这个方法,则目标方法不会被执行
public interface IUserDao {
public void save();
public void update();
public void delete();
}
@Repository
public class UserDaoIm implements IUserDao{
public void save() {
System.out.println("保存用户信息");
}
public void update() {
System.out.println("更新用户信息");
}
public void delete() {
System.out.println("删除用户信息");
}
}
@Aspect
public class Advice {
@Around("execution(* save(..))")
public void adviceMethod(ProceedingJoinPoint point) throws Throwable{
System.out.println("开始事务提交");
point.proceed();
}
}
<description>SpringIOC-初始 </description> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <context:component-scan base-package="annotation.**"></context:component-scan> <bean id="advice" class="annotation.Advice"></bean> <!-- <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"></bean> -->
public static void main(String[] args) { ApplicationContext context=new ClassPathXmlApplicationContext("annotation/beam.xml"); //获取代理lei IUserDao userDao=(IUserDao)context.getBean("userDaoIm"); userDao.save(); }