详细了解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)
nan
上一篇 2021-07-10
下一篇 2021-07-10

相关推荐

  • 颅内出血危险期是几天

    颅内出血是一种常见的神经外科疾病,它的发生率很高,严重程度也很高。对于颅内出血患者来说,危险期是非常关键的,因为在这个时期内,患者容易发生并发症和死亡。那么,究竟颅内出血危险期是几天呢?下面将为大家详细讲解。一、什么是颅内出血颅内出血指的是在颅骨内部发生的出血现象。它可以分为脑实质性出血和脑膜下积血两种类型。其中,脑实质性出血通常由于高血压引起,而脑膜下积血则通常由于头部外伤引起。二、颅内出血的危

    2023-10-02
    0
  • 自己做网页要什么(做网页需要什么)

    自己做网页要什么,做网页需要什么内容导航:网页设计需要什么制作网页需要什么东西如何让制作做网页要什么软件自己做网站,都需要会哪些东西一、网页设计需要什么学习HTML。用HTML设计网站,可以控制设计的整个过程。但是,如果仅仅是网站设计的新手,应该寻找一个允许修改HTML的软件包。HomeSite4为一个很好的Web设计工具。在设计过程中,HomeSite4能帮助

    2022-05-05
    0
  • 蒋禹清热推新书(第1-3章)天降团宠:太子又提剑砍我桃花了精彩阅读

    自打蒋禹清出生后,春雨就正式下起来了。俗语云,一年之计在于春。农人庄户,靠天吃饭,同时节赛跑。春耕时候,田野里一片喧嚣忙碌,戴斗笠披蓑衣撒秧育苗的农人比比皆是。蒋家也有十多亩水田,因此除了老胡氏、坐月子的陆氏和蒋禹清这个小奶娃外,蒋家包括身为秀才公的蒋文渊都下田地去了。

    网络资讯 2023-07-11
    0
  • 小知识:许仙的原型是吕洞宾吗(吕洞宾是什么神仙吗)

    摘要:许仙的原型是吕洞宾吗(吕洞宾是什么神仙吗)许仙是《新白娘子传奇》里的男主人公,而吕洞宾被道教全真道尊奉为北五祖之一,自古以来就有狗咬吕洞宾,不识好人心的说法,大家都知道这二人都是人们杜撰出来的,我们一起来看看吧!

    2023-06-04
    0
  • 叶雪丹严墨川小说全文-叶雪丹严墨川免费无弹窗在线阅读

    叶雪丹垂头看着怀里的东西,眼泪啪嗒啪嗒的掉。严墨川青筋蹦了蹦,又塞了两块酱肉过去:“我只带了这么多了,全给你了,不准哭了。”哭得他脑子疼。怕女孩儿还哭,他竖着眉毛,“再哭揍你!”叶雪丹见少年绷着脸凶神恶煞,半点没了在山上时笑容渗人的样子,哪怕气急败坏也没真将她如何,而怀里那两块饼子和酱肉也让她凉透了的心像是泡在温水里。她红着眼睛边哭边道,“严公子,我认识陆琢,可我从没想过大婚那日逃走。”叶雪丹是对陆琢动了心,可她却懂得廉耻,也守着父亲定下的婚约从没跟陆琢有过越界的事情,大婚这天出城也的确是余氏拿着她弟弟当

    网络资讯 2023-06-11
    0
  • 鱼腥草叶子发黄怎么办处理方法 黄叶枯萎的原因

    鱼腥草黄叶大概有三种原因。如果是因为水分不足,则要及时给它补水,逐次增加水量,使得土壤中的含水量在百分之七十五到百分之八十左右;如果是因为土壤不适,则要给它换土,最好是换成PH值6-7的微酸性质的、排水良好的沙壤土或者腐殖土;如果是因为病害问题,则要找准病症,对症下药。

    2023-10-31 生活百科
    0

发表回复

登录后才能评论