详细了解MVC+proxy

Java有两种代理方式,一种是静态代理,另一种是动态代理。对于静态代理,其实就是通过依赖注入,对对象进行封装,不让外部知道实现的细节。很多 API 就是通过这种形式来封装的

详细了解MVC+proxy,恰卡网带你了解更多相关信息。

目录
  • 1、创建业务层UserService接口定义需要完成的功能
  • 2、创建持久层UserDao接口定义具体的CURD
  • 3、完成UserService接口和UserDao的实现类
  • 4、创建InvocationHandler接口的实现类
  • 5、创建表示层Servlet去完成调用
  • 总结

1、创建业务层UserService接口定义需要完成的功能

/** * 创建目标接口,定义目标接口要完成的功能 */public interface UserService {    boolean save(User user);}

2、创建持久层UserDao接口定义具体的CURD

/** * 创建目标接口,定义目标接口要完成的功能 */public interface UserService {    boolean save(User user);}

3、完成UserService接口和UserDao的实现类

public class UserServiceImpl implements UserService {    private UserDao dao=new UserDaoImpl();    @Override    public boolean save(User user) {        boolean success=false;        success=dao.insert(user);        return success;    }}

这里省略具体的JDBC代码

public class UserDaoImpl implements UserDao {    @Override    public boolean insert(User user) {        System.out.println(\"insert into t_user (username,password)values(\'\"+user.getUsername()+\"\',\'\"+user.getPassword()+\"\')\");        return true;    }}

4、创建InvocationHandler接口的实现类

为什么需要这个接口?

因为在开发中,业务层可能含有涉及到多步数据库操作,所以这一步需要开启事务,但是开发中这样的情况太多了,所以我们需要面向横切面编程,创建代理代理,在调用业务层方法时,我们利用jdk动态代理的增强功能提供事务。这样,事务代码只用写一次,但是每次业务层方法调用时,我们都可以使用代理对象去调用业务层方法来开启事务。实现了代码复用。

public class UserHandler implements InvocationHandler {    //动态创建目标对象    Object target=null;    public UserHandler(Object target){        this.target=target;    }    @Override    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {        //返回值        Object result=null;        //增强功能        System.out.println(\"begin Transaction.....\");        result=result=method.invoke(target,args);        System.out.println(\"commit Transaction.....\");        System.out.println(\"rollback Transaction.....\");        System.out.println(\"end Transaction.....\");        //返回值        return result;    }}

这里我就用输出语句代表事务语句。

5、创建表示层Servlet去完成调用

public class UserSaveServlet {    public static void main(String[] args) throws Exception {        //需要调用的目标类        Class c= UserServiceImpl.class;        Object obj = c.newInstance();        //获取该类的类加载器        ClassLoader loader = obj.getClass().getClassLoader();        //目标对象实现的接口        Class<?>[] interfaces=obj.getClass().getInterfaces();        //获取InvocationHandler对象        InvocationHandler handler=new UserHandler(obj);        //创建代理对象        //将返回值转为接口类型        UserService service=(UserService)Proxy.newProxyInstance(loader,interfaces,handler);        boolean success=service.save(new User(\"张三\",\"123456\"));        System.out.println(success?\"保存成功\":\"保存失败\");    }}

详细了解MVC+proxy

总结

本篇文章就到这里了,希望能够帮助到你,也希望您能够多多关注趣讯吧的更多内容!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 5579166@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/2114.html

(0)
上一篇 2021-07-10 01:45:22
下一篇 2021-07-10 01:45:24

相关推荐

  • 如何缓解职场压力(如何减压)

    如何减压(如何缓解职场压力)对于上班族来说,都是会觉得压力非常的大,适当的压力是可以很好的帮助提升自己的工作效率和绩效,但是如果是超过了个人负荷的压力,就是会对我们的身心健康产生非常大的不利影响,所以职场压力是需要通过一些练习来很好的缓解。1、正确认识自己我们要正确的认识自己,了解自己的能力,做自己能做的事情,不要勉强自己,凡事要量力而行,不要贪图一时的金钱或其他什么的,而做一些自己能力范围以外的

    2021-09-09
    2150
  • 面膜多久敷一次效果最好(面膜几天做一次)

    面膜几天做一次(面膜多久敷一次效果最好)面膜算是护肤中最为基础常见的护肤产品了,面膜适用性强,能合理地帮助美白肌肤,还具有补水保湿的功能。不过在使用面膜的时候一定也要掌握正确的方法,面膜因为本身拥有不同的类型和功效,所以不同类的面膜使用的频率也不同,以下我们就根据不同的面膜类型说说面膜多久敷一次好。一、罐装面膜和片状面膜的区别:一般来说,同个价位的罐装面膜的功能性要比片状面膜强。也就是说,

    2021-09-09
    2760
  • Word一分为二中间为竖虚线(Word一页分两半)

    Word设置页码是一个常规的操作。默认插入的页码都是从文档的第一页开始,但有时候,我们需要设置从某一页开始的页码。这时候就要用到下面的设置方法了。1、打开word文档,依次点击“插入>页码>普通数字2”选项,word会自动在页脚处插入默认

    2021-11-22 创业分享
    4630
  • 什么药治湿疹最好,最全湿疹16种联合用药!

    什么药治湿疹最好(最全湿疹16种联合用药!)春季气候多变,温湿的气候使细菌复苏。气候转换、温差悬殊加之花粉传播,使得湿疹高发。湿疹是多种内外因素引起的瘙痒剧烈的一种皮肤炎症反应。中医归属于“浸淫疮”、“湿毒”之范畴。特点是急性期具渗出倾向,慢性期则浸润、肥厚。本文就给大家具体介绍一下。一般湿疹以红斑、丘疹、丘疱疹为主,皮疹中央明显,逐渐向周围散开,境界不清,弥漫性,有渗出倾向。慢性者则浸润肥厚。常

    2021-07-29
    1500
  • 燃气报警器哪个牌子质量好(燃气报警器厂家排名)

    燃气报警器哪个牌子好?如今很多的家庭都在使用燃气,在使用燃气的时候,大家最关心的就是安全性的问题,于是不少的家庭安装了燃气报警器,但是对于燃气报警器的安装,也有一些家庭会觉得没有必要。有必要安装燃气报警器吗?听维修师傅一说,才知其中的利弊。燃气报警

    2021-09-24
    1030
  • logo概念及特点的理解(什么是logo标志是什么)

    logo全称是logotype,这也是商标的英文,其实这样说很勉强,毕竟每个地方对于它的命名不一样,就比如说“网站logo”转换成“网站标志”这样听起来说起来是不是特别别扭?logo不只是商品标志,也可以是组织、徽章、个人标志等。说到底,logo是

    2022-01-07
    2020

发表评论

登录后才能评论