第六阶段ssh三大框架spring_第1页
第六阶段ssh三大框架spring_第2页
第六阶段ssh三大框架spring_第3页
第六阶段ssh三大框架spring_第4页
第六阶段ssh三大框架spring_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Spring第一课大纲 Spring框架简单介绍 Spring IOC配置Bean创建Bean作用范围依赖注入Spring框架简单介绍Spring的核心是个轻量级(Lightweight)的容器(Container),它是实现IOC(Inversion of Control)容器和非侵入性(No intrusive)的框架,并提供AOP(Aspect-oriented programming)概念的实现方式;提供对持久层(Persistence)、事务(Transaction)的支持;提供对MVC Web框架的实现,并对于一些常用的企业服务API(Application Interface)提

2、供一致的模型封装,是一个全方位的应用程序框架(Application framwork),除此之外,对于现存的各种框架(Struts, JSF, Hibernate等),Spring也提供了与它们相整合的方案。Spring是一个轻量级的j2ee的框架,核心是功能强大的容器IoC,在容器的基础上又提供对AOP的支持,以及对持久层和表示层的数据封装,同时也对持久层和表示层组件的支持.Spring框架简单介绍 区别Struts和Hibernate Struts是实现MVC模式的WEB组件,是一个比较成熟的被广泛应用在WEB应用系统的View层。 Hibernate是成熟的ORM组件,主要应用实现数据

3、持久层的功能,而最大的作用是面向对象的java语言与关系数据库之间的桥梁,是我们的开发人员可以直接通过对java对象的持久化操作来完成对数据持久化的操作。Spring框架简单介绍相关术语轻量级(Lightweight)轻量级是相对于一些重量级的容器(如EJB容器)来说的,Spring的核心包在文件容量上只有不到1MB的大小,使用Spring核心包所需要的资源也是很少的,您甚至可以在小型设备中使用Spring。(现在轻量级和重量级的确很难区分了,标准越来越多,也越来越难以衡量。EJB有轻量化的倾向,Spring也有重量化的趋势。Spring core算是轻量级,但是加上其余的部件,估计也得列入重

4、量级的范畴了。)相关术语非侵入性(No intrusive)框架原来的用意是提供一个架构的实现,让开发人员可以在基本框架的基础上,快速地开发出遵循架构所需的应用程序,然而有些框架一旦被使用,应用程序就对框架有了依赖性,例如使用了大量框架的API,或者直接继承API的某些类型等(如struts 1.x)。相关术语Inversion of Control与Dependency Injection “控制反转” IOC “依赖注入” DIAOP(Aspect-oriented programming) 下次课讲解控制反转(IoC)依赖注入(Dependency Injection)服务定位(Serv

5、ice Locator)面向切/方面的编程(AOP)持久层的封装和事务管理Spring主要功能 IOC的control是控制的意思,其实背后的意义也是一种依赖关系的转移。如果A依赖于B,其意义其B拥有控制权。如果转移这种关系(依赖关系的反转即控制关系的反转),将控制权由实现的一方转移至抽象的一方,由抽象方拥有控制权,可以获得组件的可重用性。控制反转(IOC)IoC容器工作原理示意图 The spring containerFull configured systemReady for useMagic happens hereYour Business Objects (POJOS)Confi

6、guration Metadataproduces控制反转(IOC)配置原数据 如何配置Bean以及Bean 之间的关系,如何进行Bean的实例化及Bean的实例对象之间关系的管理。 有三种方式:用xml格式(通用的配置方式)属性文件通过Spring所提供的API来通过编程的方式进行Bean的初始化工作实现IOC 实现IOC容器的初始化ApplicationContext context = new ClassPathXmlApplicationContext(applicationContext.xml);实现IOCIoC 容器的使用 一个简单的例子,来了解IoC容器的基本用法:开发业务处理

7、对象:public class IoCService private String message;/基本属性public String getMessage() return message;/提供set方法,为了在IOC容器中进行初始化public void setMessage(String message) this.message = message;public void display( ) /基本的业务方法System.out.println( getMessage() );实现IOC实现IOC配置Bean: Hello! IoC container!/测试主程序的实现 pac

8、kage cn.spring.ioc; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class IoCMain()public static void main(String args ) ApplicationContext context = new ClassPathXmlApplic

9、ationContext(applicationContext.xml); IoCService service= (IoCService) context.getBean(“iocService”);service.display();执行结果是输出字符串: “Hello! IoC container!”实现IOC配置文件的合并Spring的IoC容器除了可以管理业务对象外,还可以管理访问数据库时使用的DAO,表示层使用的Action等由于任何Java对象都可以通过Spring的IoC容器来进行管理,所以其配置文件就会变得非常复杂和庞大。因此,在实际的项目中,会按照被配置对象的特征或项目的功

10、能模块来将配置信息放置在不同的配置文件中。Spring提供了两种解决方案,一种是通过编程的方式来逐一加载配置文件,另一种是使用元素从另一个或多个文件加载Bean定义,合并方法如下所示:配置文件的合并配置文件的合并方法:.Bean的创建Spring的IoC容器具有Bean对象实例化的功能,对常用的对象实例化方法和设计模式提供了支持。主要包括以下三种:使用构造方法创建Bean实例使用静态工厂方法创建Bean的实例(略)。使用实例化的工厂方法创建Bean的实例(略)。使用构造方法创建Bean实例,配置方法如下:等价于 new constructBean()来实现对象的实例化Bean的Scope在Be

11、an的配置文件中,不仅可以控制Bean的各种依赖关系,还可以控制该对象的作用域,作用域的配置是通过元素的scope属性来进行配置的。Spring框架默认支持5种作用域: singleton IoC容器只会创建该Bean的唯一实例; prototype IoC容器在每次请求该Bean的时候都会创建一个新的实例;Bean的Scoperequest 在一次HTTP请求中,IoC容器会返回该Bean的同一个实例,对于不同的用户请求,则会返回不同的实例;session 在一个HTTP session 中,IoC容器会返回该Bean的同一个实例,对于不同的用户session,则会返回不同的实例;globa

12、l session 在一个全局的HTTP session中,IoC容器会返回该Bean的同一个实例。Bean的scopeNote:Bean的作用域中request,session和global session只能在Web应用环境中使用ApplicationContext的时候使用。对于使用singlton作用域的Bean,通常都是无状态的。同一个 Java对象可以使用元素进行多次定义,IoC容器会独立地处理每一个元素所进行的定义。依赖注入是Spring IoC容器实现反转控制的方式, Spring 的IoC容器以依赖注入的方式实现了Bean对象之间关系的维护。两种方式的对象注入:1、基于构造方

13、法的依赖注入 先看一个简单的例子: 实现Bean对象(见下页) Construct Injectionpackage com.injection.bean;public class ConstructInjectionBean private AnotherBean anotherBean; private YetAnotherBean yetAnotherBean; private int I; public ConstructInjectionBean( AnotherBean anotherBean, YetAnotherBean yetAnotherBean, int i) this.

14、anotherBean = anotherBean;this.yetAnotherBean = yetAnotherBean; this.i = i; public void display() System.out.println( ConstructInjectionBean: );System.out.println( this.yetAnotherBean );System.out.println( i ); Construct InjectionConstruct Injection 配置Bean Construct Injection测试主程序public class Inject

15、ionMain public static void main(String args) ApplicationContext context = new ClassPathXmlApplicationContext(applicationContext.xml); ConstructInjectionBean constructInjectionBean = (ConstructInjectionBean)context.getBean( constructInjectionBean );constructInjectionBean.display();Construct Injection

16、上面的配置类似于下面的java代码: AnotherBean anotherBean = new AnotherBean(); YetAnotherBean yetAnotherBean = new YetAnotherBean(); ConstructInjectionBean constructInjectionBean = new ConstructInjectionBean (anotherBean, yetAnotherBean,1);注: 在使用构造方法进行Bean的初始化时,Bean类中构造参数与XML配置文件中的配置元素应该是一一对应的;Construct InjectionS

17、etter Injection2、基于setter方法的依赖注入 使用setter方法的依赖注入,需要首先通过调用无参构造器或无参静态工厂方法实例化Bean,然后再调用该Bean的setter方法实现setter依赖注入; Demo:Setter Injectionpublic class SetterInjectionBean private AnotherBean anotherBean;private YetAnotherBean yetAnotherBean;private int i;public AnotherBean getAnotherBean() return another

18、Bean;public void setAnotherBean(AnotherBean anotherBean) this.anotherBean = anotherBean;public int getI() return i;public void setI(int i) this.i = i;public YetAnotherBeangetYetAnotherBean() return yetAnotherBean;public void setYetAnotherBean(YetAnotherBean yetAnotherBean) this.yetAnotherBean = yetA

19、notherBean;public void display() System.out.println( SetterInjectionBean: );System.out.println( this.anotherBean );System.out.println( this.yetAnotherBean );System.out.println( i ); !- Setter Injection/测试主程序public class InjectionMain public static void main(String args) ApplicationContext context = new ClassPathXmlApplicationContext(applicationContext.xml); /* * 基于setter方法的依赖注入 */SetterInjectionBean setterInjectionBean = (SetterInjectionBean)context.getBean( setterInjectionBean );setterInjectionBean.display();Setter Injection自动绑定除了在Bean定义文件中使用指定字符串以及基本类型值,使用直接指定参考至其它Bean实例,或是使用标签指定“cl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论