动态代理&注解简单分享
来源:互联网 发布:winzip mac 6 注册码 编辑:程序博客网 时间:2024/05/16 14:28
增强一个对象的某个方法有几种方式?
a.继承
条件:需要知道其父类
b.装饰者模式
不需要知道其父类是谁,只知道其实现的哪个借口即可
条件:装饰者与被装饰者需要实现同一个接口;装饰者有被装饰者的引用
c.动态代理
条件:必须知道被代理的类或者对象是谁
1.动态代理
使用动态代理很简单,明白动态代理能做什么和使用的条件即可。
注:java已经给我们提供好了使用动态代理的方法,我们只需要运用proxy的方法即可。
方法:
Interface BeanProxy=Proxy.NewProxyInstance(
ClassLoader loader,
Interface,
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//invoke(np.getClass().newInstance(), method, args);
method.invoke(np.getClass().newInstance(), args);
System.out.println("增强方法");
return null;
}){};
参数分析:
a.Classloader代表被代理类所实现接口的加载器
b.Interface代表被代理类所实现的接口(可以是多个接口)
c.InvocationHandler代表需要增强的方法(内容)
细节1:BeanProxy.方法();无论执行的是类的哪一个方法,都会执行一遍invoke方法。
细节2:判断只对某个方法进行增强,其他方法不增强。(可以使用if)
细节3:return返回值,谁调用返回给谁,返回的内容就是最终的结果。
2.注解
常见的注解:@voerride 标记方法重写
@SuppressWarnings 压制警告
@Deprecated 标记方法过时
元注解:@Target 描述注解的适用范围
@Retention 表示需要在什么级别保存该注解,描述注解的生命周期
自定义注解:注解的本质--接口
注解的属性名--接口方法的方法名
注解的属性值--接口方法的返回值
注:注解的出现其实是为了替代xml,但是没有完全替代
自定义的注解,如果只有一个方法,通常起名为value,并且在添加注解属性的时候可以省略value。
补充:类加载器
class文件加载到内存中形成class对象,这个过程就是累加载,而做这件事的东西就是加载器。
类加载器的组成:引导类加载器 扩展类加载器 应用类加载器
- 动态代理&注解简单分享
- java 注解与动态代理
- spring 注解方式动态代理
- Java注解 和动态代理
- Java注解及动态代理
- 注解、动态代理、反射文章
- 动态代理--简单实现
- 动态代理--简单实现
- 动态代理简单实例
- 动态代理简单实现
- 动态代理简单讲解
- 注解、泛型、类加载器、动态代理
- 6.Spring 动态代理(非注解)
- Spring动态代理,aop 注解实现aop
- Java注解的部分实现:动态代理
- 注解、动态代理与反射的应用
- 每日一结,注解和动态代理
- 泛型-注解-Servlet3.0-动态代理
- 直线分割平面
- WebUploader asp.net 多文件上传
- oracle索引的使用【整理】
- 随笔记
- Spring 依赖注入
- 动态代理&注解简单分享
- 老司机停车必备,颜值超高还防骚扰!| 钛空舱
- 如何使用Rust提高Ruby性能
- 前后台取值
- CCF CSP 201312-2 ISBN号码
- 创投日报:12月1日~2日收录投融资项目22起
- 乌镇互联网大佬晚宴火了;迅雷“内讧”结束;Uber三名安全经理离职丨价值早报
- Java异常处理
- php://filter 使用