传统Springmvc与Springboot开发的差异

2018年11月5日13:16:13 2 492

传统Springmvc与Springboot开发的差异

编程技术的发展带来的开发模式在不断创新,新旧模式在转变中存在哪些差异呢?让我们一起回顾下。

1 传统SpringMVC

为了更好的结合实践,我们列举的例子将包含以下模块

  1. Spring(SpringMVC)
  2. Mybatis (ORM)
  3. DruidDataSource - 数据源)

注意:

这里只是为了阐明SpringMVCSpringboot在开发过程中的差异性,其中涉及到的诸如Mybatis-Spring-boot模块、Shiro模块这里不展开分析,本文展示的部分配置与代码并不完整,不代表最终的上线版本;为了更好的认知,建议大家自行搭建环境去加深实践。

1.1 J2SE + Spring

对于普通的Java程序,我们称之为J2SE应用,当它和Spring结合的时候,一般的开发过程如下:

  1. 引入Spring相关JAR包;
  2. 编写Spring配置文件(一般为applicationContext.xml);
  3. 编写Spring相关的Bean(@Component,@Repository,@Service,@Controller),并关联业务调用;
  4. 程序启动(main方法)时适时加载配置文件applicationContext.xml
  5. Spring容器将接管所有的Bean生命周期。

1.1.1 Spring的启动引导

一般地,J2SE通过main方法进行启动引导,我们在启动初期对Spring进行加载即可,下面就是通过ClassPathXmlApplicationContext完成Spring的加载。

传统Springmvc与Springboot开发的差异

1.1.2 Spring的配置文件

  • 第一部分

此部分主要针对applicationContext.xml的配置进行剖析,此配置文件不管在J2SE还是J2EE中都适用,二者的区别在于加载的方式不同而已。

  1. 自动扫描并注册Bean到Spring容器传统Springmvc与Springboot开发的差异
  2. 加载配置信息并实例化Druid DataSource传统Springmvc与Springboot开发的差异
  3. 配置Mybatis会话工厂传统Springmvc与Springboot开发的差异
  4. 配置事物管理传统Springmvc与Springboot开发的差异
  • 第二部分

这部分主要针对spring-mvc.xml的配置,下面的J2EE启动时会加载到这部分配置,J2SE可以省略这部分内容:

  1. 扫描注入@Controller组件;传统Springmvc与Springboot开发的差异
  2. InternalResourceViewResolver前端视图解析配置;传统Springmvc与Springboot开发的差异
  3. 关于JSON、附件、日期等的转换器配置;传统Springmvc与Springboot开发的差异
  4. 关于权限安全控制的配置;传统Springmvc与Springboot开发的差异
  5. 静态资源处理的配置;
    传统Springmvc与Springboot开发的差异
  6. 其他配置包括:缓存的配置(部分略)。

1.2 J2EE + SpringMVC

与J2SE应用不同的是,J2EE应用在启动的时候是通过WEB容器,而启动配置一般通过web.xml进行引导加载,SpringMVC的配置大致分为两大部分:

  1. 配置ContextLoaderListener自动装配contextConfigLocation指定配置文件里的Spring配置。传统Springmvc与Springboot开发的差异
  2. 配置SpringMVC前端视图控制器。传统Springmvc与Springboot开发的差异
  3. 其他配置信息:如filter,servlet,error-page等(部分略)传统Springmvc与Springboot开发的差异
  4. 日志配置
    传统Springmvc与Springboot开发的差异

2 Springboot

对于Springboot,在使用Mybatis的时候配置相对来说相当少:

  1. 在xml文件中加入mybatis- spring-boot依赖:传统Springmvc与Springboot开发的差异
  2. application.properties加入配置信息:

(如下配置只为演示,不代表最终属性值,如spring.datasource.url可能需要更多连接参数)

传统Springmvc与Springboot开发的差异

  1. 编写Mapper数据接口类和相关的业务逻辑,和原来SpringMVC一样。
  2. 在启动时加上Mapper接口类扫描注解,程序自动扫描注入,这一切都是自动的。传统Springmvc与Springboot开发的差异
  • 作用原理

Springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到MybatissqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中,这一切都不用管了,直接拿起来使用就行了。

3 总结

Spring(Springmvc)更多的是和配置文件打交道,注重配置的细节,而Springboot省去了这部分配置的工作,显得更加简洁和高效。

weinxin
微信公众号
分享IT信息技术、北海生活的网站。提供北海本地化的信息技术服务。
路飞

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  2   博主  0

    • avatar 点滴记录 0

      掌握技巧多练习

        • avatar 路飞 3

          @点滴记录 IT技术日新月异,程序员确实更需要充电学习。