Spring+SpringMVC+Mybatis原理整合

Spring的核心有两部分:

  • IoC:控制反转。 
    举例来说,在之前的操作中,比方说有一个类,我们想要调用类里面的方法(不是静态方法),就要创建类的对象,使用对象调用方法实现。对于Spring来说,Spring创建对象的过程,不是在代码里面实现的,而是交给Spring来进行配置实现的。
  • AOP:面向切面编程。 
    主要是管理系统层的业务,比如日志,权限,事物等。AOP是将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为切面(aspect),切面将那些与业务逻辑无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

为什么使用Spring

  • 方便解耦,简化开发。 
    Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给Spring管理。
  • AOP编程的支持 
    Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。
  • 声明式事务的支持 
    只需要通过配置就可以完成对事务的管理,而无须手动编程。
  • 方便程序的测试 
    Spring对Junit4支持,可以通过注解方便的测试Spring程序。
  • 方便集成各种优秀的框架 
    Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts2、Hibernate、MyBatis、Quartz等)的直接支持。

降低JavaEE API的使用难度 
Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。

常用的Spring注释:

  • @Service用于标注业务层组件、 
  • @Controller用于标注控制层组件(如struts中的action)
  • @Repository用于标注数据访问组件,即DAO组件。
  • @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
  • @Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:
  • @Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
  • @Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

https://blog.csdn.net/ShyTan/article/details/82142285


SpringMVC实现MVC框架的具体方法如下图所示:


    a、前端控制器DispatchServlet接受客户端浏览器发送的请求 
    b、前端控制器DispatchServlet调用处理器映射器HandlerMapping查找相应的处理器 
    c、处理器映射器根据URL查找处理器Handler,并给前端控制器返回生成的处理器和相应的处理器拦截器HandlerIntercepter 
    d、前端控制器调用处理器适配器HandlerAdapter 
    e、处理器适配器调用相应的处理器 
    f、处理器给处理器适配器返回ModelAndView(包含逻辑视图名) 
    g、处理器将ModelAndView返回给前端控制器 
    h、前端控制器将ModelAndView传给视图解析器ViewResolver 
    i、视图解析器ViewResolver解析后将具体的视图View返回给前端控制器 
    j、前端控制器对视图进行渲染(视图渲染:将模型数据(在ModelAndView中)填充到request域中) 
    k、前端控制器将视图返回给客户端浏览器

Spring MVC的优势

1,清晰的角色划分:前端控制器(DispatcherSevlet),请求到处理器映射(HandlerMapping),处理器适配器(HandlerAdapter),视图解析器(ViewResolver),处理器或页面控制器(Controller),验证器(Validator),命令对象(Command请求参数绑定到的对象就叫命令对象),表单对象(Form Object提供给表单展示和提交到的对象就叫表单对象)。

2,分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要

3,由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象

4,和Spring其他框架无缝结合,是其他web框架所不具备的

5,可适配,通过HandlerAdapter可以支持任意的类作为处理器

6,可定制行,HandlerMapping,ViewResolver等能够非常简单的定制

7,功能强大的数据验证,格式化,绑定机制;

8,利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;

9,本地化,主题的解析的支持,使我们更容易进行国际化和主题的切换;

10,强大的JSP标签库,使Jsp编写更容易。

SpringMVC常用注解:

  • @Controller

  负责注册一个bean 到spring 上下文中

  • @RequestMapping

  注解为控制器指定可以处理哪些 URL 请求

  • @RequestBody

  该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上

  • @ResponseBody

   该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

SpringMVC常用知识:https://blog.csdn.net/ShyTan/article/details/82142393


MyBatis

                          

MyBatis 是一款优秀的持久层框架,它可以完美的定制化数据库、存放储蓄过程和其他高级的映射。MyBatis 真的很完美的避免了几乎所有的JDBC的相关的编码以及手动的设置数据参数并得到最终结果的集。

 MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个SqlSession。SqlSession包含了执行sql所需要的所有方法,可以通过SqlSession实例直接运行映射的sql语句,完成对数据的增删改查和事务提交等,用完之后关闭SqlSession。

优点:

1.基于SQL语法,简单易学。

2.能了解底层组装过程。

3.SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度。

4.程序调试方便

5、与传统JDBC比较较少了大量的代码量,是最简单的持久化框架

6、sql代码从程序代码中彻底分离,可重用,增强了项目中的分工,增强了移植性

所有sql语句,全部定义在xml(建议)中。也可以通过注解的方式在接口上实现。这些映射文件称之为mapper

缺点:

1. sql工作量很大,尤其是字段多、关联表多时,更是如此。

2. sql依赖于数据库,导致数据库移植性差。

3、框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。 

4、二级缓存机制不佳

Mybatis详解:https://blog.csdn.net/ShyTan/article/details/81905135

常用配置:https://blog.csdn.net/ShyTan/article/details/82142520

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShyTan

喜欢的给点打赏呗,纯手打

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值