于 昕,廖晨伶,周衛麗
(1.長春大學 特殊教育研究中心,吉林 長春 13002;2.長春理工大學 計算機科學技術學院,吉林 長春 130022)
MVC模式分為模型(Model)、視圖(View)和控制器(Controller)3個部分,能實現一種動態、可擴展的程序設計,當人們有其他需求時能做到對程序進行修改以及擴展簡化,并對程序的功能重復利用[1].但是該模型在系統結構和實現兩方面都具有較大的復雜度.因此并不適用于中小型應用程序,如果想要改造這些工具來適應MVC模式,就需要建立分離的部件,這增加了使用MVC架構的難度[2].Spring Boot 是一個微服務的框架,使用項目中存在著的大量的常用配置以及內置的一個習慣性的配置(即各種約定),可以在項目啟動時直接加載而不必單獨配置(即約定大于配置),讓項目快速地運行起來.由于傳統的MVC設計模式使用Java開發的Web應用程序顯得格外笨重并且每個項目都需要重新配置,因此Spring boot的到來在一定程度上解決了上述相關問題,微服務感覺像是架構中的組合模式,把能獨立的業務模塊分離出來單獨部署,實現開發、維護上的分離,避免整體升級帶來的麻煩[3].本課題研究的目的在于如何保持和延續MVC架構優點的同時,完善它的局限性.
通過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].
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框架性能部分的優化操作,所造成的性能方面的問題和它擁有的優點不相沖突.
本文案例使用的是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的具體實現類,如果沒有遵循就會報錯.
應用于實際案例,編寫了一個OA辦公管理系統,下面對系統的功能以及要求進行介紹.
1.系統管理
(1)組織結構:該模塊主要管理員工所在部門;
(2)人員管理:該模塊主要管理公司所有人員信息;
(3)公告管理:該模塊主要負責展示公司所有的公告信息.
2.個人辦公
(1)個人設置:可以設置個人信息,替換修改照片,修改個人登錄密碼,修改工作狀態,其他信息要求只讀;
(2)日程安排:方便個人安排日程,系統管理員可以對所有人安排日程;
(3)待辦事項:待辦事項中集中了用戶當前需辦理的工作和需處理的事務;
(4)流程審批:可以查看所有審批信息,新建一個流程到完成審批整個階段.可以在未審批或者已駁回階段維護流程審批數據.
3.郵件管理
(1)發件箱:展示已發送的所有郵件;
(2)收件箱:展示已接收的所有郵件;
4.工資結算:展示本月工資,展示出員工姓名、部門等信息.
5.統計管理:各部門離職情況, 上級領導對于各部門審批情況, 個人出差休假在崗比例;
6.登錄功能:要求分權限登錄.
具體結構如圖1所示,其中的各級功能對應數據庫中的各個表,完成綁定后即可進行數據操作,而不必再專門編寫數據庫操作代碼.

圖1 系統結構圖
以上信息是對系統的功能方面進行敘述,本系統的目的在于節約溝通成本,提升企業管理水平、獲得更好的經濟效益[9].
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設計模式達到了優化,而且優化得比較徹底.