zoukankan      html  css  js  c++  java
  • Spring的AOP基于AspectJ的注解方式开发1

    参考自黑马培训机构

    创建项目,引入jar包

    编写目标类,切面类并完成配置

    package spring.day2_aop2;
    /*
     * 编写目标类
     */
    public class OrderDao {
        
        public void save() {
            System.out.println("orderDao的save方法已经执行......");
        }
        public void delete() {
            System.out.println("orderDao的delete方法已经执行......");
        }
        public void update() {
            System.out.println("orderDao的update方法已经执行......");
        }
        public void find() {
            System.out.println("orderDao的find方法已经执行......");
        }
        
    }
    package spring.day2_aop2;
    
    /*
     * 编写切面类
     */
    
    public class MyAspect {
        
        public void checkPri() {
            System.out.println("=============权限校验(前置通知)=============");
        }
    }
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- ===============================引入aop开发的约束============================ -->
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop.xsd">
            
            <!-- ====在注解文件里开启aop的开发===== -->
            <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
            
           <!-- 配置目标类 --> 
           <bean id="orderDao" class="spring.day2_aop2.OrderDao"></bean>
           
           <!-- 配置切面类 -->
           <bean id="myAspect" class="spring.day2_aop2.MyAspect"></bean>
           
            
    </beans>

    在配置文件中开启aop的注解开发

    使用注解对目标类进行增强

    package spring.day2_aop2;
    
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    
    /*
     * 编写切面类
     */
    @Aspect
    public class MyAspect {
        
        @Before(value="execution(* spring.day2_aop2.OrderDao.save(..))")
        public void checkPri() {
            System.out.println("=============权限校验(前置通知)=============");
        }
    }

    编写测试类并完成测试

    package spring.day2_aop2;
    
    import javax.annotation.Resource;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    /*
     * 编写测试类
     */
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext5.xml")
    public class SpringDemo1 {
    
        @Resource(name="orderDao")
        private OrderDao orderDao;
    
        @Test
        public void demo1() {
            orderDao.save();
            orderDao.delete();
            orderDao.update();
            orderDao.find();
        }
    }

  • 相关阅读:
    zoj 2972
    图像切割之(五)活动轮廓模型之Snake模型简单介绍
    使用和制作patch文件
    一步一步写算法(之洗牌算法)
    第3讲 数码管显示
    Oracle 11g client的安装和配置。
    StringTokenizer类的使用
    BDB (Berkeley DB)数据库简单介绍(转载)
    关于MSHTML
    C语言sizeofkeyword
  • 原文地址:https://www.cnblogs.com/zengcongcong/p/10364800.html
Copyright © 2011-2022 走看看