Spring如何使用注解完成AOP

Spring通过注解完成AOP操作

  1. 引入相应的Jar包

    • aspectj依赖aop环境.
    • spring-aspects-3.2.0.RELEASE.jar
    • com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
  2. 编写要被增强的类(实际主要操作的类,切入点)
    假设该类是UserDao

  3. 书写切面类(其实就是 切点和增强的组合)
@Aspect  //定义切面
public class MyAspect {

    @Before("execution(* cn.spring3.demo1.UserDao.add(..))")//前置通知
    public void before(JoinPoint joinPoint){
        System.out.println("前置增强...."+joinPoint);
    }

    @AfterReturning(value="execution(* cn.spring3.demo1.UserDao.update(..))",returning="returnVal")
    public void afterReturin(Object returnVal){
        System.out.println("后置增强:"+returnVal);
    }
}

@Aspect使用注解定义该类是一个切面类,execution
@Before是spring提供的AOP注解,还有Around等等,
里面的参数execution,第一个*表示返回任意类型,之后的是正则表达,表示在当下包下面的 userDao的add方法调用时增强。
4. 创建applicationContext.xml
引入AOP约束,当引入约束后,敲代码时没有出现相应的AOP提示,则需要自己手动添加约束,可以在属性里面找web ca…手动引入约束。

    <aop:aspectj-autoproxy />
    <bean id="userDao" class="cn.spring3.demo1.UserDao"></bean>
    <bean id="myAspect" class="cn.spring3.demo1.MyAspect"></bean>
  1. Test方法
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringTest1 {

    @Autowired
    @Qualifier("userDao")
    private UserDao userDao;

    @Test
    public void demo1(){
        userDao.add();
 }

运行效果:
前置增强….execution(void cn.spring3.demo1.UserDao.add())
添加用户

另外springAOP操作还有基于xml文件的操作,晚点定时更新。

猜你喜欢

转载自blog.csdn.net/Vi_sener/article/details/82462327