龙源期刊网 http://www.qikan.com.cn
基于Spring框架的研究与设计
作者:黄俊勇
来源:《电脑知识与技术》2018年第03期
摘要:该文对轻量级 Web 开发框架Spring进行了研究,对Spring的核心机制之一的IOC(Inversion of Control)进行了剖析 。首先从思想上的层面探讨了Spring框架的核心思想IOC,接着从底层代码上分析了Spring IOC的具体实现原理,包括Java工厂模式和Java反射机制在Spring IOC中是如何体现的。最后将Spring框架应用于临沂木业员工管理系统中,同时临沂木业员工管理系统集成Hibernate框架和Struts框架分别作为系统的持久层和表示层。通过采用Spring框架中的IOC,临沂木业员工管理系统中的底层的辅助代码和管理员模块、员工的增删改查模块、部门模块等业务逻辑代码实现了很好的分离。正因为代码的很好分离,使得系统在维护、修改、扩展和移植上有了很大的改善。 关键词: Web;Spring;IOC
中图分类号:TP311 文献标识码:A 文章编号: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
在现在的Web项目开发中,选择一个合适的框架来实现项目,已经被越来越多的企业以及工程师重视了。一个设计优秀的框架可以显著地提高代码的重用率,对系统的运行效率也有很好的改善,对系统的可维护也有很大的提升。其中在众多开发平台中J2EE作为一款企业级开发平台,被众多网站公司以及企业应用于Web开发领域。J2EE运行的基础环境就是Java的虚拟机平台,它不仅继承下了Java标准版中的诸多优点,例如集合框架、数据流的操作、数据库的读取等,而且还提供了与Web项目开发密切相关的技术,例如对xml的支持,对网页的支持Servlet、Jsp以及EJB技术的支持。利用这一优势,我们可以开发出适合企业的应用程
龙源期刊网 http://www.qikan.com.cn
序系统,通过对其的使用,可以极大地缩短开发时间投入使用。在JavaEE的长期开发和使用中,众多工程师以及一些行业大牛,也逐步地发现了JavaEE中的一些缺陷和不足之处。为了应对这些缺陷和不足,在实际项目的开发中,新的开发模式、开发方法、开发框架以及各种框架的组合正在不断地出现和更新。这其中绝大多数都是以开源的形式发布在互联网上,让越来越多的Java爱好者和技术大牛能投入其中,在现有的平台上不断的改进和提升JavaEE框架。在这过程之中就出现一款优秀的开源框架Spring。相对于JavaEE中EJB而言Spring是一款轻量级的框架,更加重要的,Spring是非侵入式的,基于Spring系统应用中代码没有过多的依赖。另一点其分层架构也是Spring被广泛应用的原因,其不仅仅在限于服务器端的开发。 由于篇幅的原因,本文不会对Spring的所有核心技术都做研究,只是选取了Spring中的一个最基本也是最终要的一块IOC(Inversion of Control),做了深入的剖析 。从思想上的高度探讨了Spring框架的核心IOC容器,从底层代码上分析了Spring IOC容器的具体实现原理,包括Spring IOC容器是如何应用Java工厂模式和Java反射机制来实现的。并将Spring、Hibernate、Struts框架应用于临沂木业员工管理系统,分析通过采用Spring框架中的IOC,临沂木业员工管理系统中的底层的辅助代码和管理员模块、员工的增删改查模块、部门模块等业务逻辑代码实现了很好的分离。代码的分离,使得系统在维护、修改、扩展和移植上有了很大的改善。
1 Spring框架中的IOC 1.1 Spring框架的核心思想IOC
IOC(Inversion of Control)控制反转,从大的方面准确的来讲,IOC应该是程序设计中的一种思想,如何理解控制反转呢?这种思想是慢慢积累演变过来,从程序设计开始之出,当我们要用到对象的时候,就直接在程序段中通过new来直接创建对象来使用,如果一个对象依赖于其他对象(好比组装一台电脑,你会依赖主板、硬盘、显示器、键盘等等),这样我们就会继续在代码中创建其他的对象,这样使得各个类之间的耦合性很强。接着我们就会想着创建一个篮子,将所需要的对象提前放入其中,而数组、collection集合(如ArrayList、LinkedList、HashSet等)以及map集合正是我们所说的那个篮子。通过这种数组或集合来持有对象,我们将需要的对象提前放进去,需要的时候取出。虽然有了篮子,但是这个篮子里面的所有事物也需要我们之前在代码中创建好,包括篮子本身也需要我们去创建出来。虽然有了改进但是还不够理想。这样我们就会想着,让程序一开始就自带了一个很大的篮子,将我们在系统运行后期所需要的所有对象都放入其中就行,更加重要的是,它不仅将所用的对象放入其中,而且对象之间的依赖关系也被其建立起来了。 1.2 Spring框架的IOC容器实现原理
Spring框架的核心思想之一IOC,而IOC的底层实现主要应用了两个方面的技术,一个Java的工厂模式,另一个就是Java的反射机制。只有通过对这两种技术上有所了解才能从底层更好地理解和掌握Spring IOC。
龙源期刊网 http://www.qikan.com.cn
Java的工厂模式是一种经常使用的设计模式,也是Java23种设计模式之一,属于创建模式的一种。我们一般是通过new关键词来创建对象,通过new直接创建对象会带来部分问题。例如,我们要创建一个“电脑”对象,这个对象本身又会依赖“键盘”、“鼠标”、“主板”等其他对象。如果创建的话这些依赖对象就需要全部创建。代码就会显得非常冗余,而且耦合度很高,不利于后期维护。与现实相对应的,我们就会想到用工厂直接为我们创建,我们需要的只是调用相应的工厂方法就可以了。Spring的IOC容器正是利用了这一思想。将工厂模式应用于其中,提高了代码的灵活性。
有了工厂模式,还是有很大一个缺陷,就是如何去将其组织起来,而不是将其直接写入代码中。很容易我们就能想到Java的反射机制。基本上各种框架的实现很大一部分程度上都是依赖于Java的反射机制,通过反射机制,我们可以在程序运行期间,动态的获取到所有类,所有对象的属性或者方法,仅仅只是需要一个类名而已。有了这种技术,我们可以将要创建的对象名按照预先定义好的格式写入xml文件中,再通过解析xml文件,这样就可以从配置文件中读取并创建对象以及对象之间的依赖关系。这样写的代码仅仅只是所需要的类以及类的方法,还有就是简单的业务逻辑。其他的部分,都通过配置文件配置,Spring IOC容器会为我们创建,工程师所做的工作就很少了。
2 基于Struts2+Spring+Hibernate框架的临沂木业员工管理系统 2.1 Struts2+Spring+Hibernate框架的整合
1) 添加struts2的配置文件struts.xml到src目录下,在struts.xml中添加几个常用属性:禁用动态方法访问、配置成开发模式、配置拓展名为action、把主题配置成simple: ① ② ③ ④
2) 在建立Web项目中找到web.xml文件,配置Struts2和Spring的参数: ①过滤器配置,添加StrutsPrepareAndExecuteFilter类的,拦截处配成*.action。 ②注册Spring的监听器,ContextLoaderListener。
③启动Spring,参数名contextConfigLocation、参数值classpath:applicationContext.xml。 3) 在将Hibernate整合进框架中,将原本在hibernate.cfg.xml中需要配置的信息,配置在spring的applicationContext.xml文件中: