• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Spring框架的研究與設(shè)計(jì)

    2018-03-21 09:27:04黃俊勇
    電腦知識(shí)與技術(shù) 2018年3期

    黃俊勇

    摘要:該文對(duì)輕量級(jí) Web 開(kāi)發(fā)框架Spring進(jìn)行了研究,對(duì)Spring的核心機(jī)制之一的IOC(Inversion of Control)進(jìn)行了剖析 。首先從思想上的層面探討了Spring框架的核心思想IOC,接著從底層代碼上分析了Spring IOC的具體實(shí)現(xiàn)原理,包括Java工廠模式和Java反射機(jī)制在Spring IOC中是如何體現(xiàn)的。最后將Spring框架應(yīng)用于臨沂木業(yè)員工管理系統(tǒng)中,同時(shí)臨沂木業(yè)員工管理系統(tǒng)集成Hibernate框架和Struts框架分別作為系統(tǒng)的持久層和表示層。通過(guò)采用Spring框架中的IOC,臨沂木業(yè)員工管理系統(tǒng)中的底層的輔助代碼和管理員模塊、員工的增刪改查模塊、部門模塊等業(yè)務(wù)邏輯代碼實(shí)現(xiàn)了很好的分離。正因?yàn)榇a的很好分離,使得系統(tǒng)在維護(hù)、修改、擴(kuò)展和移植上有了很大的改善。

    關(guān)鍵詞: Web;Spring;IOC

    中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)03-0116-02

    Abstract: In this paper, the lightweight Web development framework Spring is studied, and the IOC (Inversion of Control), one of the core mechanisms of Spring, is analyzed. First of all, this paper discusses the core idea of Spring framework from the ideological level, and then analyzes the specific implementation principles of Spring IOC from the underlying code, including how the Java factory model and the Java reflection mechanism are embodied in Spring IOC IOC. Finally, the Spring framework applied to Linyi wood staff management system, at the same time, Linyi wood staff management system integrated with Hibernate framework and the Struts framework as the system persistence layer Through the use of AOP in the Spring framework, Linyi wood staff management system in the bottom of the auxiliary code and administrator module, staff additions and deletions to check module, Department module and other business logic code to achieve a good separation. Because of the good separation of code, the system has been greatly improved in maintenance, modification, extension and transplantation.

    Key words: Web;Spring;IOC

    在現(xiàn)在的Web項(xiàng)目開(kāi)發(fā)中,選擇一個(gè)合適的框架來(lái)實(shí)現(xiàn)項(xiàng)目,已經(jīng)被越來(lái)越多的企業(yè)以及工程師重視了。一個(gè)設(shè)計(jì)優(yōu)秀的框架可以顯著地提高代碼的重用率,對(duì)系統(tǒng)的運(yùn)行效率也有很好的改善,對(duì)系統(tǒng)的可維護(hù)也有很大的提升。其中在眾多開(kāi)發(fā)平臺(tái)中J2EE作為一款企業(yè)級(jí)開(kāi)發(fā)平臺(tái),被眾多網(wǎng)站公司以及企業(yè)應(yīng)用于Web開(kāi)發(fā)領(lǐng)域。J2EE運(yùn)行的基礎(chǔ)環(huán)境就是Java的虛擬機(jī)平臺(tái),它不僅繼承下了Java標(biāo)準(zhǔn)版中的諸多優(yōu)點(diǎn),例如集合框架、數(shù)據(jù)流的操作、數(shù)據(jù)庫(kù)的讀取等,而且還提供了與Web項(xiàng)目開(kāi)發(fā)密切相關(guān)的技術(shù),例如對(duì)xml的支持,對(duì)網(wǎng)頁(yè)的支持Servlet、Jsp以及EJB技術(shù)的支持。利用這一優(yōu)勢(shì),我們可以開(kāi)發(fā)出適合企業(yè)的應(yīng)用程序系統(tǒng),通過(guò)對(duì)其的使用,可以極大地縮短開(kāi)發(fā)時(shí)間投入使用。在JavaEE的長(zhǎng)期開(kāi)發(fā)和使用中,眾多工程師以及一些行業(yè)大牛,也逐步地發(fā)現(xiàn)了JavaEE中的一些缺陷和不足之處。為了應(yīng)對(duì)這些缺陷和不足,在實(shí)際項(xiàng)目的開(kāi)發(fā)中,新的開(kāi)發(fā)模式、開(kāi)發(fā)方法、開(kāi)發(fā)框架以及各種框架的組合正在不斷地出現(xiàn)和更新。這其中絕大多數(shù)都是以開(kāi)源的形式發(fā)布在互聯(lián)網(wǎng)上,讓越來(lái)越多的Java愛(ài)好者和技術(shù)大牛能投入其中,在現(xiàn)有的平臺(tái)上不斷的改進(jìn)和提升JavaEE框架。在這過(guò)程之中就出現(xiàn)一款優(yōu)秀的開(kāi)源框架Spring。相對(duì)于JavaEE中EJB而言Spring是一款輕量級(jí)的框架,更加重要的,Spring是非侵入式的,基于Spring系統(tǒng)應(yīng)用中代碼沒(méi)有過(guò)多的依賴。另一點(diǎn)其分層架構(gòu)也是Spring被廣泛應(yīng)用的原因,其不僅僅在限于服務(wù)器端的開(kāi)發(fā)。

    由于篇幅的原因,本文不會(huì)對(duì)Spring的所有核心技術(shù)都做研究,只是選取了Spring中的一個(gè)最基本也是最終要的一塊IOC(Inversion of Control),做了深入的剖析 。從思想上的高度探討了Spring框架的核心IOC容器,從底層代碼上分析了Spring IOC容器的具體實(shí)現(xiàn)原理,包括Spring IOC容器是如何應(yīng)用Java工廠模式和Java反射機(jī)制來(lái)實(shí)現(xiàn)的。并將Spring、Hibernate、Struts框架應(yīng)用于臨沂木業(yè)員工管理系統(tǒng),分析通過(guò)采用Spring框架中的IOC,臨沂木業(yè)員工管理系統(tǒng)中的底層的輔助代碼和管理員模塊、員工的增刪改查模塊、部門模塊等業(yè)務(wù)邏輯代碼實(shí)現(xiàn)了很好的分離。代碼的分離,使得系統(tǒng)在維護(hù)、修改、擴(kuò)展和移植上有了很大的改善。

    1 Spring框架中的IOC

    1.1 Spring框架的核心思想IOC

    IOC(Inversion of Control)控制反轉(zhuǎn),從大的方面準(zhǔn)確的來(lái)講,IOC應(yīng)該是程序設(shè)計(jì)中的一種思想,如何理解控制反轉(zhuǎn)呢?這種思想是慢慢積累演變過(guò)來(lái),從程序設(shè)計(jì)開(kāi)始之出,當(dāng)我們要用到對(duì)象的時(shí)候,就直接在程序段中通過(guò)new來(lái)直接創(chuàng)建對(duì)象來(lái)使用,如果一個(gè)對(duì)象依賴于其他對(duì)象(好比組裝一臺(tái)電腦,你會(huì)依賴主板、硬盤、顯示器、鍵盤等等),這樣我們就會(huì)繼續(xù)在代碼中創(chuàng)建其他的對(duì)象,這樣使得各個(gè)類之間的耦合性很強(qiáng)。接著我們就會(huì)想著創(chuàng)建一個(gè)籃子,將所需要的對(duì)象提前放入其中,而數(shù)組、collection集合(如ArrayList、LinkedList、HashSet等)以及map集合正是我們所說(shuō)的那個(gè)籃子。通過(guò)這種數(shù)組或集合來(lái)持有對(duì)象,我們將需要的對(duì)象提前放進(jìn)去,需要的時(shí)候取出。雖然有了籃子,但是這個(gè)籃子里面的所有事物也需要我們之前在代碼中創(chuàng)建好,包括籃子本身也需要我們?nèi)?chuàng)建出來(lái)。雖然有了改進(jìn)但是還不夠理想。這樣我們就會(huì)想著,讓程序一開(kāi)始就自帶了一個(gè)很大的籃子,將我們?cè)谙到y(tǒng)運(yùn)行后期所需要的所有對(duì)象都放入其中就行,更加重要的是,它不僅將所用的對(duì)象放入其中,而且對(duì)象之間的依賴關(guān)系也被其建立起來(lái)了。

    1.2 Spring框架的IOC容器實(shí)現(xiàn)原理

    Spring框架的核心思想之一IOC,而IOC的底層實(shí)現(xiàn)主要應(yīng)用了兩個(gè)方面的技術(shù),一個(gè)Java的工廠模式,另一個(gè)就是Java的反射機(jī)制。只有通過(guò)對(duì)這兩種技術(shù)上有所了解才能從底層更好地理解和掌握Spring IOC。

    Java的工廠模式是一種經(jīng)常使用的設(shè)計(jì)模式,也是Java23種設(shè)計(jì)模式之一,屬于創(chuàng)建模式的一種。我們一般是通過(guò)new關(guān)鍵詞來(lái)創(chuàng)建對(duì)象,通過(guò)new直接創(chuàng)建對(duì)象會(huì)帶來(lái)部分問(wèn)題。例如,我們要?jiǎng)?chuàng)建一個(gè)“電腦”對(duì)象,這個(gè)對(duì)象本身又會(huì)依賴“鍵盤”、“鼠標(biāo)”、“主板”等其他對(duì)象。如果創(chuàng)建的話這些依賴對(duì)象就需要全部創(chuàng)建。代碼就會(huì)顯得非常冗余,而且耦合度很高,不利于后期維護(hù)。與現(xiàn)實(shí)相對(duì)應(yīng)的,我們就會(huì)想到用工廠直接為我們創(chuàng)建,我們需要的只是調(diào)用相應(yīng)的工廠方法就可以了。Spring的IOC容器正是利用了這一思想。將工廠模式應(yīng)用于其中,提高了代碼的靈活性。

    有了工廠模式,還是有很大一個(gè)缺陷,就是如何去將其組織起來(lái),而不是將其直接寫(xiě)入代碼中。很容易我們就能想到Java的反射機(jī)制。基本上各種框架的實(shí)現(xiàn)很大一部分程度上都是依賴于Java的反射機(jī)制,通過(guò)反射機(jī)制,我們可以在程序運(yùn)行期間,動(dòng)態(tài)的獲取到所有類,所有對(duì)象的屬性或者方法,僅僅只是需要一個(gè)類名而已。有了這種技術(shù),我們可以將要?jiǎng)?chuàng)建的對(duì)象名按照預(yù)先定義好的格式寫(xiě)入xml文件中,再通過(guò)解析xml文件,這樣就可以從配置文件中讀取并創(chuàng)建對(duì)象以及對(duì)象之間的依賴關(guān)系。這樣寫(xiě)的代碼僅僅只是所需要的類以及類的方法,還有就是簡(jiǎn)單的業(yè)務(wù)邏輯。其他的部分,都通過(guò)配置文件配置,Spring IOC容器會(huì)為我們創(chuàng)建,工程師所做的工作就很少了。

    2 基于Struts2+Spring+Hibernate框架的臨沂木業(yè)員工管理系統(tǒng)

    2.1 Struts2+Spring+Hibernate框架的整合

    1) 添加struts2的配置文件struts.xml到src目錄下,在struts.xml中添加幾個(gè)常用屬性:禁用動(dòng)態(tài)方法訪問(wèn)、配置成開(kāi)發(fā)模式、配置拓展名為action、把主題配置成simple:

    2) 在建立Web項(xiàng)目中找到web.xml文件,配置Struts2和Spring的參數(shù):

    ①過(guò)濾器配置,添加StrutsPrepareAndExecuteFilter類的,攔截處配成*.action。

    ②注冊(cè)Spring的監(jiān)聽(tīng)器,ContextLoaderListener。

    ③啟動(dòng)Spring,參數(shù)名contextConfigLocation、參數(shù)值classpath:applicationContext.xml。

    3) 在將Hibernate整合進(jìn)框架中,將原本在hibernate.cfg.xml中需要配置的信息,配置在spring的applicationContext.xml文件中:

    ①M(fèi)ysql數(shù)據(jù)庫(kù)的驅(qū)動(dòng)類driverClass。

    ②所要連接的Mysql連接數(shù)據(jù)庫(kù)的名稱user和數(shù)據(jù)庫(kù)的訪問(wèn)密碼password。

    ③初始化時(shí)的連接數(shù)initialPoolSize。

    ④數(shù)據(jù)庫(kù)池中保留的最小連接數(shù)minPoolSize和最大連接數(shù)maxPoolSize。

    ⑤連接的最大空閑時(shí)間maxIdleTime。

    ⑥當(dāng)連接池中的連接耗盡的時(shí)候c3p0一次同時(shí)獲取的連接數(shù)acquireIncrement。

    4) 最后就是配置Spring IOC容器中應(yīng)該創(chuàng)建的系統(tǒng)與數(shù)據(jù)庫(kù)連接需要的工廠對(duì)象sessionFactory,在其屬性中將dataSource指向c3p0創(chuàng)建的dataSource源中,以及Spring的事務(wù),分為三步分別為事務(wù)管理、事務(wù)通知和需要進(jìn)行事務(wù)控制的類。

    2.2 臨沂木業(yè)員工管理系統(tǒng)功能設(shè)計(jì)

    臨沂木業(yè)員工管理系統(tǒng)主要分為兩個(gè)層面。表層也叫系統(tǒng)的前臺(tái),主要負(fù)責(zé)臨沂木業(yè)普通員工的登錄、查看個(gè)人的信息(電話、地址等)、修改個(gè)人的部分信息、以及查看公司發(fā)布給所有用戶的信息、員工之間的論壇平臺(tái)、臨沂木業(yè)的內(nèi)部員工投訴與建議平臺(tái)等。底層也叫系統(tǒng)的后臺(tái),主要負(fù)責(zé)臨沂木業(yè)人事部門的管理員登錄,職能分為對(duì)普通員工的管理(查看所有員工的信息、還有信息的分類檢索、修改其登錄權(quán)限等),發(fā)布公司公告,以郵件形式有針對(duì)的向部分員工發(fā)送通知等。系統(tǒng)中的信息,通過(guò)創(chuàng)建表的方式來(lái)存儲(chǔ)于Mysql數(shù)據(jù)庫(kù)中,其中一共有5張表:管理員信息表(t_administrator),存放底層管理人員的信息;普通員工信息表(t_employee),存放表層普通員工的個(gè)人信息;公告信息表(t_announcement),用于存放公司公告信息的、時(shí)間、主題、內(nèi)容等;權(quán)限分配表(t_authority),管理各個(gè)用戶的訪問(wèn)權(quán)限只能由管理員分配給各個(gè)用戶;考勤表(t_attendance),存放用戶上班考勤信息,所有用戶都會(huì)分配的。

    2.3 Spring IOC在臨沂木業(yè)員工管理系統(tǒng)中的體現(xiàn)

    臨沂木業(yè)員工管理系統(tǒng)內(nèi)用于存放數(shù)據(jù)的表,分別對(duì)應(yīng)相關(guān)的Administrator、Employee、Announcement、Authority、Attendance的實(shí)體類,以及與其相對(duì)應(yīng)的映射文件*.hbm.xml、數(shù)據(jù)訪問(wèn)接口I*Dao、數(shù)據(jù)訪問(wèn)接口實(shí)現(xiàn)*DaoImpl、業(yè)務(wù)邏輯接口I*Service、業(yè)務(wù)邏輯接口實(shí)現(xiàn)*ServiceImpl、控制跳轉(zhuǎn)實(shí)現(xiàn)*Action。其中所有類的創(chuàng)建都是通過(guò)Spring IOC容器來(lái)完成的,通過(guò)在其相應(yīng)*.hbm.xml文件中配置bean屬性。以接口作為類變量名,具體的實(shí)現(xiàn)類通過(guò)Spring IOC來(lái)創(chuàng)建。降低了系統(tǒng)個(gè)層面的耦合度,系統(tǒng)的可維護(hù)性、可擴(kuò)展性有了很大的提高。(其中*代表上文五個(gè)類名的通配,減少文字復(fù)述)

    3 結(jié)束語(yǔ)

    隨著互聯(lián)網(wǎng)的發(fā)展,Web 應(yīng)用系統(tǒng)在不斷的完善,各種開(kāi)發(fā)框架改進(jìn)不斷的涌現(xiàn)。本文就其中一款較為優(yōu)秀的框架Spring中的核心之一IOC進(jìn)行了深入研究。在CentOS操作系統(tǒng)中,通過(guò)Eclipse集成開(kāi)發(fā)環(huán)境、Tomcat服務(wù)器、Mysql數(shù)據(jù)庫(kù)開(kāi)發(fā)并搭建了臨沂木業(yè)員工管理系統(tǒng)。通過(guò)采用Spring框架中的IOC,臨沂木業(yè)員工管理系統(tǒng)各層代碼實(shí)現(xiàn)了很好的分離,使得系統(tǒng)在維護(hù)、修改、擴(kuò)展和移植上有了很大的改善。

    參考文獻(xiàn):

    [1] Ho Clarence,Harrop Rob,Schaefer,Chris.Pro Spring[M]. Springer,2014:32-12.

    [2] Matt Raible.Spring live,Sourcebeat[Z].2005:122-145.

    [3] Nadir Gulzar.Practical JavaEE Application Architecture[M].McGraw-Hill,2009.

    [4] DuBois Paul.MySQL Cookbook:Solutions for Database Developers and Administrators[Z].2014:1-203.

    [5] 劉軍,戴金山.基于Spring MVC與iBATIS的輕量級(jí)Web應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用,2006(4):840-842

    [6] Bruce Eckel.Java編程思想[M].4版.北京:機(jī)械工業(yè)出版社,2008.

    [7] 梅鋒.基于Spring實(shí)現(xiàn)J2EE企業(yè)級(jí)應(yīng)用開(kāi)發(fā)框架的研究與應(yīng)用[D].武漢:武漢理工大學(xué),2007.

    湾仔区| 玉龙| 石楼县| 陇南市| 栾城县| 时尚| 仪征市| 吴忠市| 农安县| 靖州| 手游| 贺兰县| 竹北市| 金山区| 青海省| 鄱阳县| 利辛县| 楚雄市| 溧阳市| 乌什县| 若尔盖县| 瓮安县| 崇阳县| 苗栗市| 登封市| 儋州市| 昌吉市| 邵阳市| 浑源县| 宁陕县| 武隆县| 日照市| 昆明市| 景谷| 黔江区| 德清县| 黔东| 桑植县| 高清| 阿瓦提县| 富宁县|