spring课程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Spring课程1Spring基本特征Spring是一个非常活跃的开源框架;它是一个基于Core来构架多层JavaEE系统的框架,它的主要目地是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Spring提倡”最少侵入”,这也就意味着你可以适当的时候安装或卸载Spring2Spring的组成2.1Spring的jar包到下载spring,然后进行解压缩,在解压目录中找到下面jar文件,拷贝到类路径下--spring的核心类库在spring文档的dist下dist\spring.jar--引入的第三方类库都spring文档的lib下lib\jakarta-commons\commons-logging.jar如果使用了切面编程(AOP),还需要下列jar文件lib/aspectj/aspectjweaver.jar和aspectjrt.jarlib/cglib/cglib-nodep-2.1_3.jar如果使用了JSR-250中的注解,如@Resource/@PostConstruct/@PreDestroy,还需要下列jar文件lib\j2ee\common-annotations.jar注:JSR(Java规范请求)是指向JCP(JavaCommunityProcess)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR(Java规范请求),以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准2.2Spring配置文件默认情况下是applicationContext.xml文件。可以建立很多xml文件,工程中一般都是这样配置的。2.3SpringAPI3Spring基本功能详解3.1SpringIOCSpring的控制反转:把对象的创建、初始化、销毁等工作交给spring容器来做。由spring容器控制对象的生命周期。步骤:A.启动spring容器1、在类路径下寻找配置文件来实例化容器ApplicationContextctx=newClassPathXmlApplicationContext(newString[]{beans.xml});可以在整个类路径中寻找xml文件*通过这种方式加载。需要将spring的配置文件放到当前项目的classpath路径下*classpath路径指的是当前项目的src目录,该目录是java源文件的存放位置。2、在文件系统路径下寻找配置文件来实例化容器ApplicationContextctx=newFileSystemXmlApplicationContext(newString[]{“d:\\beans.xml“});Spring的配置文件可以指定多个,可以通过String数组传入。注:经常用第一种方法启动容器B.从spring容器中提取对象3.2别名beansaliasname=personalias=p/beanname=personclass=cn.itcast.aliasspring.Person//beans通过这样的配置,可以达到在一个地方命名,在多个地方使用不同的名字的效果。3.3Spring容器内部对象的创建3.3.1使用类构造器实例化(默认无参数)beanid=“personServiceclass=cn.itcast.bean.impl.PersonServiceImpl/3.3.2使用静态工厂方法实例化(简单工厂模式)beanid=personServiceclass=com.itcast.factory.PersonServiceFactoryfactory-method=createPersonService/publicclassPersonServiceFactory{publicstaticPersonServicecreatePersonService(){returnnewPersonServiceImpl();}}3.3.3初始化bean时机Spring默认在启动时将所有singletonbean提前进行实例化。提前实例化意味着作为初始化的一部分,ApplicationContext会自动创建并配置所有的singletonbean.通常情况下这是件好事。因为这样在配置中有任何错误能立即发现。Lazy-init=”trueorfalse”Lazy-init为false,spring容器将在启动的时候报错(比较好的一种方式)Lazy-init为true,spring容器将在调用该类的时候出错。3.4Bean的作用域3.4.1singleton(默认值)在每个SpringIoC容器中一个bean定义只有一个对象实例(共享)。默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:beanid=xxxclass=cn.itcast.OrderServiceBeanlazy-init=true/如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“,如下:beansdefault-lazy-init=true“...3.4.2prototype允许bean可以被多次实例化(使用一次就创建一个实例).Spring不能对一个prototypebean的整个生命周期负责.这就意味着清楚prototype作用域的对象并释放任何prototypebean所持有的昂贵资源都是客户端的责任。3.4.3Request3.4.4Session3.4.5Globalsession3.4.6指定Bean的初始化方法和销毁方法Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法。beanid=“foo”class=“...Foo”init-method=“setup”destory-method=“teardown”/当foo被载入到Spring容器中时调用init-method方法。当foo从容器中删除时调用destory-method(scope=singleton有效)3.5依赖注入(DI)3.5.1使用构造器注入使用xml的注入方式A.通过参数的顺序constructor-argindex=0value张三/value/constructor-argconstructor-argindex=1value56/value/constructor-argB.通过参数的类型constructor-argtype=java.lang.Integervalue56/value/constructor-argconstructor-argtype=java.lang.Stringvalue张三/value/constructor-arg3.5.2使用属性setting方法进行注入使用xml的注入方式:A.简单Bean的注入简单Bean包括两种类型:包装类型和Stringbeanid=personServiceclass=com.itcast.bean.impl.PersonServiceImpl!--基本类型,string类型--propertyname=agevalue=20/propertypropertyname=namevalue=张无忌/property/beanB.引用其他Beanbeanid=personclass=com.itcast.bean.Person/beanid=personServiceclass=com.itcast.bean.impl.PersonServiceImplpropertyname=personref=person//bean3.5.3装配list集合3.5.4装配set集合3.5.5装配mappropertyname=mapsmapentrykey=01valuemap01/value/entryentrykey=02valuemap02/value/entry/map/propertymap中的entry的数值和list以及set的一样,可以使任何有效的属性元素,需要注意的是key值必须是String的。3.5.6装配Propertiespropertyname=propspropspropkey=01prop1/proppropkey=02prop2/prop/props/property3.6注解注入步骤:A.在配置文件中,引入context命名空间beansxmlns=:xsi=:context=:schemaLocation=://://://在配置文件中加入context:annotation-config标签context:annotation-config/这个配置隐式注册了多个对注释进行解析处理的处理器AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,RequiredAnnotationBeanPostProcessor注:@Resource注解在spring安装目录的lib\j2ee\common-annotations.jar3.6.1@Autowired这两个注解的区别是:@Autowired默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。@Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。3.6.2@Qualifier如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:3.6.3@Resource1、@Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上.2、@Resource注解默认按名称装配。名称可以通过@Resource的name属性指定,如果没有指定name属性,•当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象•当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。•注意:如果没有指定name属性,并且按照默认的名称找不到依赖对象时,@Resource注解会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。3.6.4@PostConstruct指定Bean的初始化方法3.6.5@PreDestroy指定Bean的销毁方法3.7扫描注入前面的例子我们都是使

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功