编程技术的发展带来的开发模式在不断创新,新旧模式在转变中存在哪些差异呢?让我们一起回顾下。
1 传统SpringMVC
为了更好的结合实践,我们列举的例子将包含以下模块:
- Spring(SpringMVC)
- Mybatis (ORM)
- Druid(DataSource - 数据源)
注意:
这里只是为了阐明SpringMVC与Springboot在开发过程中的差异性,其中涉及到的诸如Mybatis-Spring-boot模块、Shiro模块这里不展开分析,本文展示的部分配置与代码并不完整,不代表最终的上线版本;为了更好的认知,建议大家自行搭建环境去加深实践。
1.1 J2SE + Spring
对于普通的Java程序,我们称之为J2SE应用,当它和Spring结合的时候,一般的开发过程如下:
- 引入Spring相关JAR包;
- 编写Spring配置文件(一般为applicationContext.xml);
- 编写Spring相关的Bean(@Component,@Repository,@Service,@Controller),并关联业务调用;
- 程序启动(main方法)时适时加载配置文件applicationContext.xml;
- Spring容器将接管所有的Bean生命周期。
1.1.1 Spring的启动引导
一般地,J2SE通过main方法进行启动引导,我们在启动初期对Spring进行加载即可,下面就是通过ClassPathXmlApplicationContext完成Spring的加载。
1.1.2 Spring的配置文件
- 第一部分
此部分主要针对applicationContext.xml的配置进行剖析,此配置文件不管在J2SE还是J2EE中都适用,二者的区别在于加载的方式不同而已。
- 自动扫描并注册Bean到Spring容器
- 加载配置信息并实例化Druid DataSource
- 配置Mybatis会话工厂
- 配置事物管理
- 第二部分
这部分主要针对spring-mvc.xml的配置,下面的J2EE启动时会加载到这部分配置,J2SE可以省略这部分内容:
- 扫描注入@Controller组件;
- InternalResourceViewResolver前端视图解析配置;
- 关于JSON、附件、日期等的转换器配置;
- 关于权限安全控制的配置;
- 静态资源处理的配置;
- 其他配置包括:缓存的配置(部分略)。
1.2 J2EE + SpringMVC
与J2SE应用不同的是,J2EE应用在启动的时候是通过WEB容器,而启动配置一般通过web.xml进行引导加载,SpringMVC的配置大致分为两大部分:
- 配置ContextLoaderListener自动装配contextConfigLocation指定配置文件里的Spring配置。
- 配置SpringMVC前端视图控制器。
- 其他配置信息:如filter,servlet,error-page等(部分略)
- 日志配置
2 Springboot
对于Springboot,在使用Mybatis的时候配置相对来说相当少:
- 在xml文件中加入mybatis- spring-boot依赖:
- 在application.properties加入配置信息:
(如下配置只为演示,不代表最终属性值,如spring.datasource.url可能需要更多连接参数)
- 编写Mapper数据接口类和相关的业务逻辑,和原来SpringMVC一样。
- 在启动时加上Mapper接口类扫描注解,程序自动扫描注入,这一切都是自动的。
- 作用原理
Springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到Mybatis的sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中,这一切都不用管了,直接拿起来使用就行了。
3 总结
Spring(Springmvc)更多的是和配置文件打交道,注重配置的细节,而Springboot省去了这部分配置的工作,显得更加简洁和高效。
1F
掌握技巧多练习
B1
@ 点滴记录 IT技术日新月异,程序员确实更需要充电学习。