首页 文章 精选 留言 我的

精选列表

搜索[Spring项目],共10014篇文章
优秀的个人博客,低调大师

SSM-Spring-09:Spring中jdk动态代理

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- JDK动态代理: 为何叫JDK动态代理呢? 所谓JDK,jdk是java开发工具包,它里面包含了一个动态代理的api 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。 何为动态?相比于静态代理,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定一组接口及目标类对象就能动态的获得代理对象。 下面我拿例子带入,具体的动态代理案例如下: 首先按平时的方式来写,一个接口,一个实现它的类 ISomeService接口 package cn.dawn.day09jdkdtproxy; /** * Created by Dawn on 2018/3/8. */ public interface ISomeService { public void doSome(); } SomeServiceImpl类,实现ISomeService接口 package cn.dawn.day09jdkdtproxy; /** * Created by Dawn on 2018/3/8. */ public class SomeServiceImpl implements ISomeService { public void doSome() { System.out.println("do something"); } } 测试类,用动态代理的形式,对方法进行增强操作 package cn.dawn.day09jdkdtproxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** * Created by Dawn on 2018/3/8. */ public class Test { public static void main(String[] args) { /*匿名内部类要想得到外面的值,需要把外面的值改为常量*/ final ISomeService service=new SomeServiceImpl(); /*用动态代理的方式生成ISomeService的对象,就是增强后的对象,可以看看newProxyInstance的方法参数,就有方法去写了*/ /*InvocationHandler是由代理实例的调用处理程序实现的接口。*/ ISomeService proxy=(ISomeService)Proxy.newProxyInstance(service.getClass().getClassLoader(), service.getClass().getInterfaces(), new InvocationHandler() { /** *invoke:每个代理实例都有一个关联的调用处理程序。当在代理实例上调用方法时,方法调用将被编码并分派给invoke 其调用处理程序的方法。 * @param proxy 代理对象,没啥用 * @param method 反射获取的方法 * @param args 方法的参数 * @return * @throws Throwable */ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("before==================="); method.invoke(service,args);//相当于执行目标类型的方法 return null; } }); proxy.doSome(); } } 值得一提的是:Proxy是java.lang.reflect包下,正因如此,才叫JDK动态代理

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册