分享
分销 收藏 举报 申诉 / 516
播放页_导航下方通栏广告

类型Spring框架教程全书.pptx

  • 上传人:快乐****生活
  • 文档编号:11066624
  • 上传时间:2025-06-30
  • 格式:PPTX
  • 页数:516
  • 大小:3.55MB
  • 下载积分:25 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Spring 框架 教程 全书
    资源描述:
    单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第1章 Spring框架简介与IoC容器,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第1章 Spring框架简介与IoC容器,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第2章Spring AOP,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第3章Spring注解,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第3章Spring注解,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第4章 Spring安全机制,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第4章 Spring安全机制,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第5章 Struts 2基础,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第6章 Struts 2核心,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第6章 Struts 2核心,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第7章 Struts 2标签库,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第7章 Struts 2标签库,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第8章 Struts 2其他功能,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第8章 Struts 2其他功能,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第9章 MyBatis介绍,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第10章 MyBatis DAO开发,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/4/25,第10章 MyBatis DAO开发,1.1Spring简介,1.2IoC容器,1.3 Spring IoC容器,1.1Spring简介,Spring是一个开源框架,它由Rod Johnson创建。Spring诞生之初是为了解决企业应用软件开发日益复杂的难题。Spring创建的初衷如下:,(1)J2EE应该更加简单。,(2)使用接口而不是使用类,是更好的编程习惯。,(3)为JavaBean提供了一个更好的应用配置框架。,(4)更多地强调面向对象的设计,而不是现行的技术。,(5)尽量减少不必要的异常捕捉。,(6)使应用程序更加容易测试。,Spring框架目标:,(1)可以令人方便愉快地使用Spring。,(2)应用程序代码并不依赖于Spring API。,(3)Spring不是和现有的解决方案竞争,而是致力于与现有解决方案融合在一起。,1.1.1 Spring历史,Spring自从2003年发布以来,一直是Java开源框架的奇迹之一。Spring从2004年3月到现在,已经发布了1.0、1.1、1.2、2.0、2.5、3.0、4.0等几个主要版本,目前发布的版本增加了许多特性,比如Spring表达式语言、IoC增强、声明模型验证、更多的注解支持和嵌入式数据库支持等。,1.1.2Spring项目简介,围绕着Spring框架本身,有许多优秀的项目,此处只对Spring的常用项目进行简单介绍。,(1)Spring Framework(Core):整个Spring项目的核心。,(2)Spring Web Flow:定义了一种特定的语言来描述工作流,且其高级的工作流控制器引擎可以管理会话状态,支持AJAX来构建丰富的客户端体验,还能对JSF提供支持。,(3)Spring Security:广泛使用的基于Spring的认证和安全工具。,(4)Spring Dynamic Modules:可以让Spring应用运行在OSGi平台上。,(5)Spring Batch:提供构建批处理应用和自动化操作的框架。,(6)Spring Android:为Android终端开发应用提供Spring支持,并提供了一个基于Jave的在Android应用环境中工作的REST客户端。,(7)Spring Mobile:是基于Spring MVC构建的,可为移动终端的服务器应用开发提供支持。,(8)Spring Social:Spring框架的扩展,可以帮助Spring应用更方便地使用SNS(Social Network Service)。,所有基于Spring的项目都是以Spring Framework为基础开发出来的。事实上,Spring Framework也是Spring体系的核心。作为平台,Spring将许多应用开发中遇到的共性问题进行了抽象;同时,作为一个轻量级的应用开发框架,Spring和传统的J2EE开发相比,有其自身特点。通过这些自身特点,Spring充分体现了它的设计理念:支持POJO和使用JavaBean的开发方式、面向接口开发、支持OO(面向对象)的设计方法。,到目前为止,Spring Framework一共包含大约20个模块,这些模块大多集中在Core Container、Data Access/Integration、Web、AOP、Instrumentation和Test部分。图1-1描述了Spring Framework模块的结构。,以下是部分Spring Framework模块的具体作用。,1.Core Container,Core Container部分主要包含Beans、Core、Context和Expression Language等模块。,(1)Beans和Core模块:框架的基础部分,提供依赖注入和IoC(控制反转)特性。,(2)Context模块:构建于Beans和Core模块基础之上,提供了一种类似于JNDI注册器的框架式对象访问方法。,(3)Expression Language模块:提供了一个强大的表达式语言,可以在运行时查询和操纵对象。,2.Data Access/Integration,Data Access/Integration部分包含JDBC、ORM、OXM、JMS和Transaction等模块。,(1)JDBC模块:提供了一个JDBC抽象层,可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码。,(2)ORM模块:为流行的对象/关系映射APIJPA、JDO、Hibernate、iBatis等提供了一个交互层。,(3)OXM模块:提供了一个对Object/XML映射实现的抽象层。,(4)JMS(Java Messaging Service)模块:主要包含制造和消费消息的特性。,(5)Transaction模块:支持编程和声明性的事务管理,这些事务类必须实现特定的接口,并且对所有的POJO都适用。,3.Web,Web部分包含Web、Servlet、Struts、Porlet等模块。,(1)Web模块:提供了基础的面向Web的集成特性,它还包含Spring远程支持中的Web相关部分。,(2)Servlet模块:包含Spring的Model-View-Controller(MVC)实现。,(3)Struts模块:提供了对Struts的支持,使得类在Spring应用中能够与一个典型的Struts Web层集成在一起。,(4)Portlet模块:提供了用于Portlet环境和Web-Servlet模块的MVC实现。,4.AOP,AOP即面向切面编程。在程序开发中AOP可以解决一些系统层面的问题。,5.Instrumentation和Test,Instrumentation模块提供了Class Instrumentation支持和ClassLoader实现,可以在某些特定的应用服务器上使用。Test模块支持使用JUnit和TestNG对Spring组件进行测试。,1.1.3 Spring Framework安装,本节使用的是Spring Framework 3.1.3,以Spring Framework 3.1.3为例,该文件压缩包中含有开发必需的jar包、源代码和帮助文档。解压包图如图1-2所示,图中各文件夹说明如下:,dist:存放Spring Framework各功能模块的jar包。,docs:存放帮助文档和Spring Framework的API参考。,projects:按功能存放Spring Framework各模块的项目源代码,包含Eclipse项目文件和Maven项目构建配置文件。,src:打包按功能存放的Spring Framework各模块的项目源代码,只含有源码,不含项目配置文件。,在创建Java项目后,如果需要使用Spring Framework,则要根据需要导入dist目录下面相关的jar包。,为了方便项目的管理,可以使用Eclipse自定义库,把Spring Framework的相关文件放到用户自定义库中,当创建项目时可直接使用该库。创建自定义库的方式如图1-3所示,在Eclipse菜单中选择WindowPreferencesJavaBuild PathUser Libraries,然后点击“New”新建用户自定义库,新建完毕后,选择“Add JARs”添加上述所有的jar包,再选择“OK”,即可完成用户自定义库的创建。,完成用户自定义库的创建后,当创建Java项目时,可以在创建的配置向导中导入用户自定义库,如图1-4所示。配置好Spring开发环境后就可以使用Spring框架进行开发了。本章从Spring Framework的核心IoC容器开始介绍。,1.2IoC容器,1.2.1IoC容器和依赖倒置原则,IoC(Inverse of Control,控制反转)是Spring容器的核心,其他模块都是在此基础上发展起来的。依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计领域的一种软件设计原则。依赖倒置原则基于这样一个事实:相对于细节的多变性,抽象的东西要稳定得多。即,以抽象为基础搭建起来的架构比以细节为基础搭建起来的架构要稳定得多。在Java中,抽象指的是接口或者抽象类,细节就是具体的实现类,使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给实现类去完成。,依赖倒置原则的核心思想是面向接口编程,使用接口是实现解耦合的最重要的途径,此处用一个例子来说明面向接口编程比面向实现编程好的原因。,假设现在有一台电脑需要安装打印机,但目前只有一种类型的打印机可选,即黑白打印机。,首先,设计打印机类:,public class GrayPrinter,/初始化方法,public void init(),System.out.println(启动打印机!);,/打印,public void print(String txt),System.out.println(打印黑白文字:.concat(txt);,此处,设计打印机类有两个方法,一个是init启动,另一个是print打印方法。,其次,设计电脑类:,public class Computer,GrayPrinter p;,public GrayPrinter getP(),return p;,public void setP(GrayPrinter p),this.p=p;,/打印文本,public void printTxt(String txt),p.init();,p.print(txt);,在电脑类中有一个打印机属性和一个打印方法。,最后,为测试类代码:,public class TestComputer,/*,*param args,*/,public static void main(String args),/TODO Auto-generated method stub,/创建电脑,Computer pc1=new Computer();,/创建打印机,GrayPrinter p=new GrayPrinter();,pc1.setP(p);,/打印文本,pc1.getP().print(打印测试页.);,运行测试代码,得到需要的打印结果。,过了几年,人们发现这个世界还是彩色的比较好看,于是发明了彩色打印机,此时打印机的选择就变多了,为了实现彩色打印不得不多写一个彩色打印机类,并修改电脑类。又过了几年,人们发现激光打印机更清晰,于是,又需要修改电脑类总之,每次有新的打印机上市,就需要修改电脑类的代码。事实上这是一个典型的依赖具体实现的例子电脑类对GrayPrinter产生了依赖,一旦有新型的打印机产生(即产生新的ColorPrinter、LazerPrinter等),就需要修改电脑类代码。根据依赖倒置原则描述的,调用者应该依赖被调用者的抽象,而不是依赖于它的具体实现,此时可以抽象出一个Printer接口,其他的具体实现类都靠这个接口实现,这样修改后,无论以后怎样扩展Printer类,都不需要再修改电脑类了。修改之后的代码如下。,Printer接口:,public interface Printer,/初始化方法,void init();,/打印,void print(String txt);,GrayPrinter黑白打印机:,public class GrayPrinter implements Printer,/初始化方法,Override,public void init(),System.out.println(启动打印机!);,/打印,Override,public void print(String txt),System.out.println(打印黑白文字:.concat(txt);,ColorPrinter彩色打印机:,public class ColorPrinter implements Printer,/初始化方法,Override,public void init(),System.out.println(启动彩色打印机!);,/打印,Override,public void print(String txt),System.out.println(打印彩色文字:.concat(txt);,电脑类:,public class Computer,Printer p;,/打印文本,public void printTxt(String txt),p.init();,p.print(txt);,public Printer getP(),return p;,public void setP(Printer p),this.p=p;,此时电脑类依赖的是Printer这个抽象接口,而不是依赖于Printer的具体实现。但在测试类中又存在相似的问题,比如现在需要彩色打印机,具体代码如下:,public class TestComputer,/*,*param args,*/,public static void main(String args),/TODO Auto-generated method stub,/创建电脑,Computer pc1=new Computer();,/创建打印机,Printer p=new ColorPrinter();,pc1.setP(p);,/打印文本,pc1.getP().print(打印测试页.);,在上述TestComputer测试类中,使用了new ColorPrinter方式创建Printer实例,假设把所有彩色打印机换成黑白的,则要修改TestComputer测试类中的代码。为了减少修改代码的次数,可以写一个配置文件,配置具体需要实例化的类,然后在TestComputer测试类中读取配置文件,再根据配置产生不同的实例。此时TestComputer测试类的改变如下:,public class TestComputer,private static Properties p=new Properties();,/读取Bean配置文件,static,try,p.load(TestComputer.class.getResourceAsStream(/bean.properties);,catch(IOException e),System.out.println(无法找到配置文件!);,/根据属性文件中定义的关键字创建实例,public static Object getBean(String keyName),Object o=null;,try,o=Class.forName(p.get(keyName).toString().newInstance();,catch(Exception e),System.out.println(无法实例化对象!);,return o;,/*,*param args,*/,public static void main(String args),/TODO Auto-generated method stub,/创建电脑,Computer pc1=new Computer();,/创建打印机,Printer p=(Printer)TestComputer.getBean(printer);,pc1.setP(p);,/打印文本,pc1.getP().print(打印测试页.);,可以看到,上述TestComputer测试类代码在静态块中读取了bean.properties配置文件,同时提供了一个getBean方法,该方法可以根据bean.properties的配置来实例化一个类,在给电脑装配打印机的时候,不再采用new的方式直接实例化对象,而是通过调用getBean的方式获取一个根据业务需要产生的具体实例。,bean.properties的代码如下:,printer=com.ssoft.ssh.demo2.ColorPrinter,#com.ssoft.ssh.demo2.GrayPrinter,这里bean.properties定义了一个名叫printer的主键,值是ColorPrinter类的全名,当然,也可以根据具体的需要切换成GrayPrinter类。如此配置之后即可根据具体的业务需要产生不同的、和业务相关的Printer实例给TestComputer测试类使用,即便以后有了新类型的Printer,也不需要修改TestComputer测试类,只需要添加一个Printer的实现类,这样,可以让应用程序具有很好的扩展能力。需要注意的是,运用很多设计模式或者类设计原则的时候并不会减少代码量,相反会增加一定量的代码,但这样做的好处是增强程序的扩展能力,提高程序的维护性。,在理解了上述例子之后,此时再讲Spring的IoC容器就比较容易理解了。容器是用来装东西的,Spring的IoC容器就是用来装Bean实例的,然后把这些实例通过配置的方式注入调用者中,而不是直接在代码中硬编码实例对象,所以,IoC也叫作DI依赖注入(Dependency Injection)。,1.2.2 依赖注入类型,依赖注入通常分为三类,分别是接口注入(Type1型)、构造器注入(Type2型)和setter注入(Type3型),其中Type2型和Type3型是比较常用的类型,尤其Type3型是使用最多的注入方式。,所谓setter注入,就是指调用者类提供一个setter方法,把被调用者作为参数传递给调用者,比如前面的电脑类代码中有一个Printer属性,我们通过setPrinter的方法把Printer对象的实例传递给它,这就是典型的setter注入方式。,构造器注入方式,表示的是调用者在实例化的时候必须注入被调用者的实例。若把上例改成构造器注入,则电脑类代码就必须改成如下方式:,public class Computer,Printer p;,public Computer(Printer p),this.p=p;,在创建电脑类实例的时候,必须把Printer的实例注入给Computer实例:,Computer c=new Computer(new ColorPrinter();,若把上例改成接口注入的方式,则电脑类必须实现一个接口,其代码如下:,public interface Computeable,/定义接口注入,void inject(Printer p);,public class Computer implements Computeable,Printer p;,public void inject(Printer p),this.p=p;,其中,调用代码如下:,Computeable pc=new Computer();,pc.inject(new ColorPrinter);,这种接口注入的方式需要调用者必须实现一个指定的接口,典型的应用有EJB(这种方式使用比较少,一般不推荐)。,Spring IoC容器提供了Type2和Type3型的注入方式。,1.3 Spring IoC容器,1.3.1 BeanFactory容器,BeanFactory采用工厂模式,提供了最基本的IoC容器功能:实例化对象、配置对象之间的依赖关系。在Spring中,所有的对象都是由BeanFactory工厂来生产管理的。,BeanFactory只是一个接口类,它定义了IoC容器的一个标准,却没有给出容器的具体实现,因此还需要依靠具体的实现类。通俗地讲,BeanFactory如同生活中定义的容器,而瓶子、罐子、盒子等都是容器的具体化。,由于BeanFactory只定义了最基本的IoC容器规范,所以,BeanFactory主要用在内存、CPU资源受限场合,比如Applet、手持设备等,也就是小型应用场景,企业级别的应用通常需要使用BeanFactory的子接口,比如最常用的ApplicationContext接口。,1.3.2 ApplicationContext容器,BeanFactory提供了最基本的功能,而ApplicationContext则提供了更多的面向企业级应用的功能,ApplicationContext是BeanFactory的子接口,所以,ApplicationContext拥有BeanFactory提供的所有功能。,ApplicationContext提供了以下面向企业级应用的功能:,(1)提供了文本信息解析工具,包括对国际化的支持。,(2)提供了载入文件资源的通用方法,如载入图片。,(3)可以向注册为监听器的Bean发送事件。,由于它提供的附加功能,基本上中大型的应用系统都会选择ApplicationContext而不是BeanFactory。只有在资源很少的情况下,才会考虑采用BeanFactory,如在移动设备上。在ApplicationContext的诸多实现中,有三个实现会经常用到:,ClassPathXmlApplicationContext类路径中的XML文件载入上下文定义信息,把上下文定义文件当成类路径资源。,FileSystemXmlApplicationContext从文件系统中的XML文件载入上下文定义信息。,XmlWebApplicationContext从Web系统中的XML文件载入上下文定义信息。,BeanFactory与另一个重要区别是关于Bean的载入时机。BeanFactory延迟载入所有的Bean,直到getBean()方法被调用时Bean才被创建,这种方式的好处是即用即实例化,节约了内存资源,所以常用于移动设备。ApplicationContext则不同,它会在上下文启动后实例化所有的Bean,并通过预载入单实例Bean,确保需要的时候已经准备充分。,1.3.3 使用Spring IoC容器,使用Spring的IoC容器来管理Bean通常需要以下几步:,创建Bean的实现类。,使用XML文件配置元数据,把Bean配置到XML文件中,让Spring进行管理。,实例化容器,获得BeanFactory的实例。,通过BeanFactory获取Spring IoC容器管理的实例。,Spring 提供了强大的IoC容器来管理组成应用程序的Bean。要利用容器提供的服务,就必须创建需要的Bean类,并且配置Bean,让这些Bean能够被Spring IoC容器管理。,在Spring IoC容器里可以通过XML文件、属性文件甚至API来配置Bean。因为基于XML的配置既简单又成熟,所以本书只基于XML进行配置。如果对其他配置方法感兴趣,可以自行查阅Spring的相关文档,那里有更多关于Bean配置的信息。,Spring允许使用一个或多个Bean配置文件来配置Bean。对于简单的应用程序而言,可以将所有Bean集中配,置于一个文件中。但是,对于大型的、拥有很多Bean的应用程序而言,则应该根据Bean的不同功能将它们分别配置到多个文件里。,接下来采用Spring IoC容器管理的方式来完成前面介绍的打印机例子。,1.创建Bean类,创建所需要的Bean类,创建一个抽象类Printer。和前例的不同在于增加了属性,其中type表示打印机类型,manu表示生产厂商,代码如下:,public abstract class Printer,/类型,String type;,/厂商,String manu;,/初始化方法,public abstract void init();,/打印,public abstract void print(String txt);,public String getType(),return type;,public void setType(String type),this.type=type;,public String getManu(),return manu;,public void setManu(String manu),this.manu=manu;,再创建电脑类和Printer的子类,这两个类和前面例子中所创建的一样。,2.使用XML文件配置Bean,使用XML文件配置元数据,让Spring能够管理Bean的实例和依赖关系。,要通过XML在Spring IoC容器里声明Bean,首先需要创建XML Bean配置文件。我们计划在项目的源代码src目录中创建一个名叫beans.xml的配置文件,然后写出一个基于XML配置的基本结构。,在使用基于XML的方式配置元数据的时候,XML有一个根元素就是beans,我们需要在元素中添加一个或者多个元素。元素的配置根据需要和应用程序中实际使用的对象一一对应。,如果要在应用程序中使用ColorPrinter的实例,那么可以采用如下配置:,同理,如果需要配置Computer的实例,则配置如下:,除了配置Bean的属性外,还可以根据需要通过配置Bean的子标签来配置多个Bean之间的关系,以达到注入的目的。其中,Type3型的注入方式通过子标签实现,Type2型的注入方式通过子标签实现。首先介绍标签的用法。,1),property是最常用的子标签,它可以给Bean设置属性。其中,name表示Bean的属性名称。通常属性的值可以用以下方式赋予:,直接使用value。,使用value子元素。,使用ref子元素指向另一个Bean,指向的Bean必须在配置文件中存在。,需要注意的是该Bean的属性必须提供set/get方法。,假设有一个电脑类的表示如下:,public class Computer,/生产厂商,String manu;,/型号,String type;,public String getType(),return type;,public void setType(String type),this.type=type;,public String getManu(),return manu;,public void setManu(String manu),this.manu=manu;,/打印机,Printer p;,/打印文本,public void printTxt(String txt),p.init();,p.print(txt);,public Printer getP(),return p;,public void setP(Printer p),this.p=p;,则可以通过上面的三种方式来配置一个电脑类的实例:,苹果,此外,property还可以包含集合元素,并通过、等配置与Java集合中的list、set、map对应,比如:,China,American,England,China,American,England,当为简单类型的属性赋值时,Spring支持使用快捷方式。可以在元素里使用value属性,以此取代在元素里内附一个元素。,比如,如下配置:,为了方便定义属性,可以采取另一种便利的快捷方式。这种方式通过使用p Schema来定义Bean属性,其中p是元素的属性。这种方式可以减少XML配置的代码行数。,2),在Bean中嵌入多个子元素,通过名称可以看出,这些子元素是给Bean的构造函数注入值,即Type2类型的注入方式,这种注入有以下3种方式:,用type指定类型,value指定值。,用ref属性引用另一个已经配置好的Bean。,用ref子标签引用另一个已经配置好的Bean。,具体见下例:,在定义User类的时候,构造函数需要有两个参数,其中User类的定义如下:,public class User,String name;,String sex;,int age;,/联系信息,ContactInfo cInfo;,public User(String name,ContactInfo cInfo),this.name=name;,this.cInfo=cInfo;,用户的联系信息类ContactInfo的定义如下:,public class ContactInfo,String mobile;,String address;,String qq;,public String getMobile(),return mobile;,public void setMobile(String mobile),this.mobile=mobile;,public String getAddress(),return address;,public void setAddress(String address),this.address=address;,public String getQq(),return qq;,public void setQq(String qq),this.qq=qq;,3.使用多模块配置,当项目规模比较小的时候,只需要配置一个文件,但通常情况下,应用Spring的项目规模都比较大,为了便于项目的管理和人员的分工协作,通常要把Spring的配置文件按模块进行划分,一般一个模块需要一个配置文件,然后由一个总的配置文件把这些文件包含进来。,假设一个人力资源管理系统可能包含部门员工管理系统、招聘系统、工资系统、考勤系统、培训系统等5个,模块,那么就可以分5个模块,并分别写5个模块的Spring配置文件,比如spring_employee.xml、spring_salary.xml、spring_job.xml、spring_checkin.xml、spring_train.xml,最后把这5个配置文件通过标记导入到一个名叫spring_hr.xml的配置文件中。spring_hr.xml的配置如下:,这只是多文件配置方式中的一种,在做Web开发和其他框架集成的时候,还会介绍其他多文件配置的方式。,4.实例化Spring容器,使用配置文件定义好了容器管理的Bean之后,第三步就是在程序当中获取BeanFactory的实例,然后通过BeanFactory产生所需要的Bean的实例。获取BeanFactory的实例的方式有多种,其中最常见的方式如下:,方式一:实例化BeanFactory。,要实例化BeanFactory,首先必须将Bean配置文件加载到Resource对象中。例如,下面的语句就对位于classpath根目录下的配置文件进行了加载。,Resource resource=new ClassPathResource(beans.xml);,Resource仅仅是一个接口,ClassPathResource是它的一个实现,ClassPathResource用于从Classpath加载资源。,其他Resource接口的实现,如FileSystemResource、InputStreamResource和UrlResource用于从其他位置加载资源。图1-5显示了在Spring里Resource接口的一般实现。,接下来,使用上面加载配置文件生成的Resource对象,实例化BeanFactory。,BeanFactory factory=new XmlBeanFactory(resource);,BeanFactory仅仅是一个接口,它对BeanFactory的操作进行了抽象,XmlBeanFactory则是对它的具体实现,,用于从XML配置文件构建BeanFactory,在Spring3.X版本中已经建议不采用XmlBeanFactory的方式获取BeanFactory,所以最好还是采用第二种方式。,方式二:实例化ApplicationContext。,和BeanFactory类似,ApplicationContext也只是一个接口,要使用ApplicationContext,首先必须实例化它的实现类。ClassPathXmlApplicationContext是ApplicationContext的实现,从classpath加载XML配置文件,然后构建Application Context。也可以为其指定多个配置文件。,加载单个文件:,ApplicationContext=new ClassPathXmlApplicationContext(beans.xml);,加载多个文件:,ApplicationContext=new ClassPathXmlApplicationContext(,new Stringbeans.xml,beans1.xml);,除了ClassPathXmlApplicationContext,Spring还提供了一些其他的ApplicationContext实现。,FileSystemXmlApplicationContext用于从文件系统加载XML配置文件,XmlWebApplica
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:Spring框架教程全书.pptx
    链接地址:https://www.zixin.com.cn/doc/11066624.html
    页脚通栏广告

    Copyright ©2010-2025   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork