美文网首页
Spring AOP的原理及实现

Spring AOP的原理及实现

作者: 空山Echo | 来源:发表于2018-09-17 17:50 被阅读0次

    一、安装STS插件

    二、整合junit测试

    1. 导包 4+2+aop+test
      • 对测试类@RunWith(SpringJUnit4ClassRunner.class)//帮我们创建容器
      • ContextConfiguration("classpath:spring配置文件路径")//指定创建容器使用哪个配置文件
      • @Resource(name="user")//将名为user的对象注入到测试类的变量中
        private User u;

    三、Spring中的AOP

    1. AOP思想
      纵向重复,横向抽取


      image.png
    2. Spring中的AOP概念
      spring能为容器中管理的对象生成动态代理对象
    3. Spring实现AOP的原理
    • 动态代理(有接口时优先)
      被代理的对象必须要实现接口,才能产生代理对象,如果没有接口将不能使用动态代理


      image.png
      image.png
    • cglb代理(没有接口)
      第三方代理技术,cglb代理可以对任何类生产代理,代理的原理是对目标对象进行继承代理,如果目标对象被final修饰,则该类无法被cglb代理


      image.png
      image.png
    image.png

    四、AOP中名词解释

    image.png

    1. 导包 4(spring)+2(log)+2+2


      image.png
    2. 准备目标对象


      image.png
    3. 准备通知


      image.png
      image.png
    1. 配置进行织入,将通知织入目标对象
    2. 方式一、xml配置完成织入
      spring applicationContext.xml中
    • 导入aop约束
    • 配置目标对象<bean class="ServiceImpl">
    • 配置通知对象<bean class="MyAdvice">
    • 配置将通知织入对象


      image.png
    • 测试


      image.png
    1. 方式二、注解
    • spring applicationContext.xml中 开启
    • 对通知类添加@Aspect
    • 对通知类中的方法指定类型和切入点
      • 其一:如下对各个方法添加注解
        @Before(execution(切点表达式))
        public void before(){}
      • 其二:可写抽取切点方法,供个方法使用
        @Pointcut("execution(* 包名.+类名公共结尾部分.(..))")
        public void pc(){}
        @Before(类名.pc())
        public void before(){}

    相关文章

      网友评论

          本文标题:Spring AOP的原理及实现

          本文链接:https://www.haomeiwen.com/subject/ypwzgftx.html