MVC+proxy的原理及使用方法

这篇文章主要讲解了“MVC+proxy的原理及使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MVC+proxy的原理及使用方法”吧!

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

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

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

  • 4、创建InvocationHandler接口的实现类

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

  • 总结

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

/**
*创建目标接口,定义目标接口要完成的功能
*/
publicinterfaceUserService{
booleansave(Useruser);
}

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

/**
*创建目标接口,定义目标接口要完成的功能
*/
publicinterfaceUserService{
booleansave(Useruser);
}

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

publicclassUserServiceImplimplementsUserService{
privateUserDaodao=newUserDaoImpl();
@Override
publicbooleansave(Useruser){
booleansuccess=false;
success=dao.insert(user);
returnsuccess;
}
}

这里省略具体的JDBC代码

publicclassUserDaoImplimplementsUserDao{
@Override
publicbooleaninsert(Useruser){
System.out.println("insertintot_user(username,password)values('"+user.getUsername()+"','"+user.getPassword()+"')");
returntrue;
}
}

4、创建InvocationHandler接口的实现类

为什么需要这个接口?

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

publicclassUserHandlerimplementsInvocationHandler{

//动态创建目标对象
Objecttarget=null;
publicUserHandler(Objecttarget){
this.target=target;
}
@Override
publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{
//返回值
Objectresult=null;
//增强功能
System.out.println("beginTransaction.....");
result=result=method.invoke(target,args);
System.out.println("commitTransaction.....");
System.out.println("rollbackTransaction.....");
System.out.println("endTransaction.....");
//返回值
returnresult;
}
}

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

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

publicclassUserSaveServlet{
publicstaticvoidmain(String[]args)throwsException{
//需要调用的目标类
Classc=UserServiceImpl.class;
Objectobj=c.newInstance();
//获取该类的类加载器
ClassLoaderloader=obj.getClass().getClassLoader();
//目标对象实现的接口
Class<?>[]interfaces=obj.getClass().getInterfaces();
//获取InvocationHandler对象
InvocationHandlerhandler=newUserHandler(obj);
//创建代理对象
//将返回值转为接口类型
UserServiceservice=(UserService)Proxy.newProxyInstance(loader,interfaces,handler);
booleansuccess=service.save(newUser("张三","123456"));
System.out.println(success?"保存成功":"保存失败");
}
}

MVC+proxy的原理及使用方法

感谢各位的阅读,以上就是“MVC+proxy的原理及使用方法”的内容了,经过本文的学习后,相信大家对MVC+proxy的原理及使用方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是恰卡编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

发布于 2021-07-09 21:19:59
收藏
分享
海报
0 条评论
187
上一篇:如何利用ffmpeg拉RTSP流转推RTMP服务器 下一篇:php中rewrite的作用是什么
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码