栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java】SpringAOP的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java】SpringAOP的使用

房东租房的例子

有一个房东要出租房屋:

package com.shin.demo04;

public class Host implements Rent {
    public void rent() {
        System.out.println("房东出租房屋");
    }
}
package com.shin.demo04;

public interface Rent {
    void rent();
}

在动态代理的例子中,已经可以实现通过一个代理生成类给各种各样的被代理类动态生成代理类了。但是从租房者的角度来看操作还是略复杂,不够透明。下面用SpringAOP来实现,先写个扩展功能类:

package com.shin.demo04;

import org.springframework.aop.MethodBeforeAdvice;

import java.lang.reflect.Method;

public class Action implements MethodBeforeAdvice {
    public void before(Method method, Object[] args, Object target) throws Throwable {
        System.out.println("带你看房");
    }
}

然后写applicationContext.xml来配置:



    

    
    

    
        
        
    



关于SpingAOP的概念和配置就不介绍了,这里的配置作用就是把action下的操作切入被代理类。具体切在哪里看Action实现了哪个接口。这里还要注意下execution表达式的语法。

有一个打工人前来租房:

package com.shin.demo04;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Rent host = context.getBean("host",Rent.class);
        host.rent();
    }
}

这时打工人不需要自己new任何对象了,从容器中拿个房东就可以租房了,从打工人的角度也看不到中介了。运行结果:

分析
  1. 跟动态代理的区别在哪?首先房东这个对象交给Spring来管理了,然后如果我们为房东配置了切面,那么Spring在创建房东的时候,实际上创建的是房东的代理对象。这也就是Rent host = context.getBean(“host”,Rent.class);中写的不是Host.class的原因。
  2. 几个要素:
    • 被代理的类
    • 被代理的类实现的接口
    • 切面类
    • spring配置bean和切面
    • 调用者
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/532169.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号