详细了解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

总结

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

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

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

相关推荐

  • 目前最好的行车记录仪(车载监控设备)

    传统车载监控系统布线复杂?安装费用居高不下?摄像头通电麻烦?这么多问题,能否一次性解决?交给敏视新品9寸高清720P车载2.4G数字无线系统易安装即时自动对码抗干扰能力强并有超大视角超远无线传输距离高分辨率超大显示屏确保车载监控

    2021-10-14 随笔
    30
  • 为什么下载速度很慢怎么办(下载速度突然变慢的原因)

    没事在家上个网,刷刷视频和网购,可是速度太慢,整个人都emo了,那你家宽带网速为啥不快?下面就从五个方面展开逐一说,让你彻底弄明白解决网速慢的原因!一、宽带运营商与宽带运营商有关的网速慢一般跟网路带宽、安装方式、运营商品牌有关。宽带的网络带宽:在网络

    2022-01-10
    20
  • 张珂张子怡小说在哪里可以看 万族战争全文阅读

    “恩?没人吗?兄弟原来是条弃船啊!”一个陌生男子的声音说到。“兄弟,管他那么多做什么?把它带回去,到时就说我两巡逻时发现侦察的敌人,敌人已经被杀了,这船就是他当时坐的,我们两不就又是大功一件吗?”另一个陌生男子的声音笑到。这时第一个陌生的声音笑到:“兄弟,真有你的,就这么办吧!”说完他俩便转身出了船舱。

    2023-06-18
    20
  • 「幼师怎么做副业赚钱」这类“教师”月入过万一小时800

    幼师怎么做副业赚钱,幼师可以干点什么副业那 内容导航: 适合幼师的25个副业 幼师可以从事哪些副业 天龙八部3 什么副业比较赚钱 这类“教师”月入过万一小时800 一、适合幼师的2…

    2022-09-12
    20
  • 言意欢萧璟行全文免费阅读言意欢萧璟行小说结局

    言意欢从未想过,姐姐竟跟自己受着同样的折磨。这一刻,心底的愤怒与悲哀几乎要将她整个人吞噬殆尽!可那女人偏偏还要上前,挑衅的开口:“夫人快跟我们回家吧,夫君说了,您腹中的孩子,可还要记在我名下呢。”言意欢瞳孔一缩,还未反应过来,一个清脆的巴掌声响起。

    2023-05-30
    20
  • 小说萧凌墨颜晗全文在线赏析 萧凌墨颜晗大结局免费阅读

    而萧凌墨也会以世人惊叹的速度,一步步从筑基迈向渡劫,最后成为万年来修真界飞升第一人。而她,这个萧凌墨名义上的师父,就是他灵根第二次进阶的祭品。尽管承受着剜心之痛,可萧凌墨的面上却没有一丝痛苦的神色。他低头看了下胸口渐渐溢出的血,薄唇扬起讥讽的弧度:“师父若是再抖下去,这心头血就白费了。”听得这话,颜晗回了神,原主是怎么做来着?哦对,舔、吸……颜晗顿时一僵,整个人都不好了,这……这么色气满满的么?取心头血也就罢了,还又吸又舔的,知道的人明白她是在喝心头血,不知道的,还以为是某种运动前的前戏呢!看着萧凌墨胸口

    2023-06-18
    20

发表回复

登录后才能评论