基于MVC的软件架构重构与优化研究

2021-08-31 09:46廖晨伶周卫丽
吉林化工学院学报 2021年7期
关键词:设计模式数据源启动

于 昕,廖晨伶,周卫丽

(1.长春大学 特殊教育研究中心,吉林 长春 13002;2.长春理工大学 计算机科学技术学院,吉林 长春 130022)

MVC模式分为模型(Model)、视图(View)和控制器(Controller)3个部分,能实现一种动态、可扩展的程序设计,当人们有其他需求时能做到对程序进行修改以及扩展简化,并对程序的功能重复利用[1].但是该模型在系统结构和实现两方面都具有较大的复杂度.因此并不适用于中小型应用程序,如果想要改造这些工具来适应MVC模式,就需要建立分离的部件,这增加了使用MVC架构的难度[2].Spring Boot 是一个微服务的框架,使用项目中存在着的大量的常用配置以及内置的一个习惯性的配置(即各种约定),可以在项目启动时直接加载而不必单独配置(即约定大于配置),让项目快速地运行起来.由于传统的MVC设计模式使用Java开发的Web应用程序显得格外笨重并且每个项目都需要重新配置,因此Spring boot的到来在一定程度上解决了上述相关问题,微服务感觉像是架构中的组合模式,把能独立的业务模块分离出来单独部署,实现开发、维护上的分离,避免整体升级带来的麻烦[3].本课题研究的目的在于如何保持和延续MVC架构优点的同时,完善它的局限性.

1 基于Spring boot实现MVC架构重构

通过Spring boot框架重构MVC设计模式开发的应用程序.代码重构之后会使应用程序变得有层次、有条理.但多数情况下,开发项目的时间比较少时,不建议对数据进行重构操作,因为重构要花费大量的人力和时间.在处理数据库的业务逻辑时,不使用数据库的语句,简化数据库语句的相关操作,一个类对应一个表,使表中字段与类的成员变量对应起来,不用关心类实例怎么和数据库数据进行交互.根据情况执行生成的数据库语句,自动处理返回对象的结果,还可以返回开发人员想要的形式.建立一个数据的对象模型,并把数据库的表和字段与模型相对应,把数据库交互形成的代码进行修改.

2 MVC模式优化-Spring boot框架

2.1 Spring boot框架关于优化MVC设计模式的内容

关于MVC设计模式,比较熟悉和使用较多的是Spring+SpringMVC+Mybatis(简称SSM框架).SSM需要进行大量配置,引用依赖包、数据库驱动包、服务器jar包、核心容器依赖包等.项目中大量文件的编写不仅使项目的运行变慢,过分的框架整合配置、繁琐的代码编写更是会导致效率的大幅度降低.而Spring boot框架中则集成了大量开箱即用的第三方库配置,也就是所说的各种“约定”,这样使开发人员能够更加专注于业务逻辑设计,而不必进行繁琐的项目配置,实现约定大于配置.所以,Spring boot框架的优点有如下几点:

1.可以简化编码[4];

2.可以简化配置;

3.可以简化部署,简化了tomcat服务器的相关文件的配置部署;

4.可以简化监控,直接使用REST 方式来获取进程的运行期性能参数.

(1)某项目都有出现在三种度量结果的前十名,但在各方法中具体排名不同.以bootstrap为例:从用户兴趣的角度对项目进行排名,bootstrap排名第二,如图3中(b)所示;从开发参与的角度进行排名,bootstrap排名第三,如图3中(c)所示;本文所提方法由于综合了用户兴趣和开发参与等因素,避免了单一因素的片面性,其项目排名为第一,体现了bootstrap项目在用户兴趣和开发参与等方面的综合成功.

综上所述,它和SSM结构上差不多,只是在SSM基础上省略了配置文件,加快项目的启动,还内置了tomcat服务器,省略了服务器的配置工作[5].

2.2 Spring boot框架优化MVC设计模式的方法

Spring boot框架的核心原理是基于SpringMVC无配置文件、(纯Java)完全注解化+内置tomcat实现SpringBoot框架、Main函数启动,SpringBoot核心快速整合第三方框架原理:Maven继承依赖关系,SpringBoot内嵌入tomcat,SpringBoot采用SpringMVC注解版本实现无配置效果[4].Spring boot框架的性能优化:扫描包文件进行优化,通过使用@SpringBootApplication注解自动获取服务器配置、数据库配置信息,由有效的自动配置(auto-configuration)和相关组件的扫描(component scanning)组成,这跟使用@Configuration、@EnableAutoConfiguration和@ComponentScan3个注解的作用是一样的.这样做给开发带来方便的同时,也会造成项目启动时间过长降低运行的效率、加载出多余不需要的内容、cpu的消耗过大3方面的影响.针对以上情况,我们可以在项目中对@SpringBootApplication注解进行删除,然后使用@ComponentScan注解来扫描特定的包.内置tomcat服务器 直接利用Java语言创建tomcat服务器运行.添加依赖; 创建servlet; 创建tomcat启动程序; 以上内容是对Spring boot框架性能部分的优化操作,所造成的性能方面的问题和它拥有的优点不相冲突.

3 实际案例相关技术概括

3.1 数据库相关设计与优化

本文案例使用的是Mysql数据库[6].实际应用案例OA办公管理系统对应的数据库有如下表:

1.员工信息oa_user表;

2.日程安排oa_schedule表;

3.邮件信息oa_email表;

4.公告信息oa_notice表;

6.部门信息oa_dept表.

数据库表设计是OA办公管理系统中用到的所有表,从系统的性能和可维护性考虑,所有表的设计都满足数据库设计的三范式,并合理设计了相关表的外键联系,以便后面的多表联合查询操作.数据库的设计中适当的进行相关表的外键设置,可以通过连接查询的方式快速对数据库的数据进行相关查询,还有对数据库表的结构进行了合理的设置,表中各字段的类型设置和长度设置,避免查询的低效率,保证数据库的稳定性.而对数据库连接优化操作可以通过数据源实现,所有用户对数据库的连接操作都需要经过加载数据库驱动程序、连接数据库、操作数据库、关闭数据库释放连接4个步骤.但只在操作数据库上是不一样的,所以最好写一个工具类用来存放所有数据库连接,这样使用数据库的时候就可以不用重新反复加载数据库的驱动,以及实现连接数据库之类的操作了.直接在工具类中找到相关数据库连接就可以,关闭的时候直接在工具类中把连接关掉.那么保存所有数据库连接的空间可以称为连接池,但这个空间用程序实现会比较麻烦,所以在tomcat4.1.27之后,在tomcat服务器上就增加了数据源配置的选项,这样直接在服务器上配置好数据源连接池即可[7].具体来说,就是通过实现org.apache.tomcat.jdbc.pool.DataSource这个数据源,并配置application.yml中的datasource为该数据源、指定jndi-name为jdbc/datahub方式、数据库名字db为你的数据库,完成Spring boot对JNDI的绑定.系统运行过程中,在J2EE服务器上保存着一个数据库的多个连接,客户端可以通过名称找到被绑定在JNDI树上的DataSource,再由DataSource找到一个连接,那么在以后的操作中,除了数据库的连接方式不一样之外,其他的所有操作都一样,只是关闭的时候不是彻底地关闭数据库,而是把数据库的连接放回到连接池中去[8].当然,数据源可以是任何类型的数据库.ORM系统是一组专门为大多数著名的数据库管理系统构建的类.一个主要类为所需数据库管理系统中的一般类型的表提供基本的映射、关系和管理.关系应该被映射为允许以面向对象的方式获取相关数据,而不需要开发人员编写复杂的查询.应该考虑数据的急切和懒惰加载.数据源提供了大家都可以用的一个模板,数据源中存放了数据库的连接信息.数据源通过抽象的映射找到对应的连接数据库.数据源将连接保存在连接池中,掩盖了底层具体的实现方法,只提供JDBC驱动的抽象的一个接口,用来得到相关数据库的连接,使用数据源建立的对象会放在连接池统一进行管理.而连接池在JDBC具体实现上,就是封装JDBC的接口,这个封装过程需要配置数据库驱动包,而且配置的过程中要保证遵循JDBC API的具体实现类,如果没有遵循就会报错.

3.2 改进MVC设计模式的应用

应用于实际案例,编写了一个OA办公管理系统,下面对系统的功能以及要求进行介绍.

1.系统管理

(1)组织结构:该模块主要管理员工所在部门;

(2)人员管理:该模块主要管理公司所有人员信息;

(3)公告管理:该模块主要负责展示公司所有的公告信息.

2.个人办公

(1)个人设置:可以设置个人信息,替换修改照片,修改个人登录密码,修改工作状态,其他信息要求只读;

(2)日程安排:方便个人安排日程,系统管理员可以对所有人安排日程;

(3)待办事项:待办事项中集中了用户当前需办理的工作和需处理的事务;

(4)流程审批:可以查看所有审批信息,新建一个流程到完成审批整个阶段.可以在未审批或者已驳回阶段维护流程审批数据.

3.邮件管理

(1)发件箱:展示已发送的所有邮件;

(2)收件箱:展示已接收的所有邮件;

4.工资结算:展示本月工资,展示出员工姓名、部门等信息.

5.统计管理:各部门离职情况, 上级领导对于各部门审批情况, 个人出差休假在岗比例;

6.登录功能:要求分权限登录.

具体结构如图1所示,其中的各级功能对应数据库中的各个表,完成绑定后即可进行数据操作,而不必再专门编写数据库操作代码.

图1 系统结构图

以上信息是对系统的功能方面进行叙述,本系统的目的在于节约沟通成本,提升企业管理水平、获得更好的经济效益[9].

4 结 论

MVC设计模式在设计过程中的大量配置文件,以及对服务器进行相关信息的配置,都会造成项目的启动效率下降[10].Spring boot框架内置了服务器,省略了配置文件,加快项目启动,使对应的性能、效率和灵活性得到了相应的提升[11].分别对SSM框架和Spring boot框架的应用程序进行启动测试,得出数据如表1所示.

表1 启动时间对比

通过以上数据可以看到,Spring boot的启动时间大约是SSM的一半.在传统 WEB 项目中,项目的启动一般是从 web.xml 配置文件的载入开始,SSM的启动过程实际上就是 Ioc 容器初始化以及载入 Bean 的过程,并在适当的时候创建Servlet节点实例,而SpringBoot 则回归了 Java 的本源,即通过 main 方法方式引导启动.表1中的Spring boot启动时间基本上就是JVM中的启动时间,可见Spring boot框架确实对MVC设计模式达到了优化,而且优化得比较彻底.

猜你喜欢
设计模式数据源启动
“1+1”作业设计模式的实践探索
三维协同设计模式下的航天项目管理实践与展望
交通机电工程设计模式创新探讨
Web 大数据系统数据源选择*
雾霾来袭 限产再次启动
基于不同网络数据源的期刊评价研究
安发生物启动2017
基于真值发现的冲突数据源质量评价算法
西部最大规模云计算中心启动
俄媒:上合组织或9月启动扩员