Spring 从入门到精通
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在企业应用开发过程中,是不主张使用自动装配模式的
Bean的依赖检查
Spring允许Bean在初始化之前强制执行其他Bean的初始 化。通过的<bean>元素中指定depends-on属性设置 通过在<bean>元素中指定dependency-check属性来检查 Bean的每个属性是否设定完成。
simple模式,对基本类型、字符串、集合进行依赖检查 object模式,对依赖的对象进行依赖检查 all模式,对全部属性进行依赖检查 none模式,不进行依赖检查
spring.jar
配置Spring
ApplicationContext.xml
IoC/DI
控制反转(Inversion of Control,IoC)与依赖注入 (Dependency Injection,DI)。由容器来管理对象之间的 依赖关系(而不是对象本身来管理),就叫“控制反转” 或“依赖注入” 前面的例子,已清楚阐述IoC/DI出现的原因,以及IoC的基 本原理:抽象不依赖于现实,而是现实依赖于抽象。 Spring框架的基本思想就是IoC/DI,Spring就是一个IoC容 器 IoC与DI,说的是一回事,但DI这个名词更能表达这种设计 模式的思想
基于注解的依赖注入
spring注解的使用
1、要使用注解来代替xml的配置,要引入如下jar包: %spring_home%\lib\j2ee\common-annotations.jar。而且在 applicationContext.xml中要加入<context:annotation-config /> 的命名空间。 2、引入spring头文件 3、写@ 开头 注解 @Resource注入接口
Bean的自动装配模式
Spring提供了5种自动装配的模式,从而减少一些属性的设 置。在<bean>元素中设置autowire属性
byName模式,通过Bean的属性名字进行自动装配 byType模式,通过在配置文件查找一个属性类型一样的Bean 来进行自动装配 constructor模式,是指根据构造函数的参数尽心自动装配 autodetect模式,通过对Bean检查类的内部来选择是 constructor还是byType模式 no模式,不使用自动装配
<bean id="sample" class="com.fendou.service.impl.SampleImpl“ destory-method=“clearup”/>
或者通过实现 org.springframework.beans.factory.DisposableBean接 口,实现destory()方法来完成
Bean的依赖模式3
parent模式,表示被参考引用的Bean可以是当前 BeanFactory或ApplicationContext的父BeanFactory或 ApplicationContext中的Bean。
表示继承的父类 如果有很多继承同一个父类的BEAN 那么在配置文件中实例那些BEAN时候可以省略掉父类已经注入 的属性
Spring最常用的特性
利用Spring来创建对象(JavaBean工厂) 利用Spring构建业务逻辑层
管理依赖关系 适应需求变更
利用Spring创建数据访问对象(DAO) 利用Spring进行事务处理
Spring的安装
下载并解压
http://www.springframework.org/
将相应的jar包加入类路径
内部Bean,在<property>或<constructor-arg>元素中使 用<bean>元素再定义一个Bean
内部Bean的scope、id、name属性会被忽略 内部Bean总是prototype(原型)模式 内部Bean不能在包含该内部Bean的Bean之外
依赖注入的配置
注入集合
通过<list>、<set>、<map>、<props>配置与Java Collection类型对应List、Set、Map、Properties
控制反转
应用本身不负责依赖对象的创建和维护,而是由 外部容器来负责。 这样控制权就由应用转移到外部容器,控制权的 转移就是所谓的反转。
容器是符合某种规范能够提供一系列服务的管理器,开发人 员可以利用容器所提供的服务来方便地实现某些特殊的功能。 所谓的“重量级”容器是指那些完全遵守J2EE的规范,提供 规范中所有的服务。EJB就是典型的例子。 “轻量级”容器的也是遵守J2EE的规范,但其中的服务可以 自由配置。
public PersonFactory { public static Person getPerson(){ return new Person(); } } <bean id="person2" class="com.spring.bean.PersonFactory" factorymethod="getPerson"></bean>
延迟初始化Bean
默认的情况下在容器启动时会初始化Bean。但可以通过指 定<bean>元素中的lazy-init属性来延迟初始化Bean,这样 将会在第一次获取Bean的时候初始化Bean
<bean id="sample" class="com.fendou.service.impl.SampleImpl“ lazy-init=“true”/>
使用实例工厂方法实例化
<bean id=“sampleFactory" class="com.fendou.service.impl.SampleFactory“> <bean id="sample3" factory-bean=“sampleFactory” factory-method=“createSample” />
Bean的依赖模式2
bean模式 (可找id,也可找name命名的别名) <bean id="book1" name="book2" class="com. Book"> Bean与被参考引用的Bean可以在不同的XML文件中。 ApplicationContext context = new ClassPathXmlApplicationContext (new String[]{"beans1.xml","beans2.xml"}); bean-dao.xml bean-po.xml bean-service.xml bean-….xml
注入依赖对象
在<property>或<constructor-arg>元素中使用<ref> 在<property>或<constructor-arg>元素中加上ref属性
注入null值
如果使用<value></value>这种形式,Spring是作为空字符串 来对待的。可以使用<null>表示null值
Prototype。在每次对该bean请求时创建出一个新的bean 对象(原型)
<bean id=“sample” class=“com.fendou.service.impl.SampleImpl“ scope=“prototype”/>
其他作用域:request、session、global session
<bean id="sample" class="com.fendou.service.impl.SampleImpl“ init-method=“init”/>
或者通过实现 org.springframework.beans.factory.InitializingBean接 口,实现afterPropertiesSet()方法来完成 Bean的销毁可以通过指定destory-method属性来完成
Bean的依赖模式1
用ref属性指定依赖。
local模式 Bean与被参考引用的Bean在同一个XML文件中,而且被参 考 应用的Bean是指定id属性。 Spring的XML解析器会在解析时匹配,如果没有匹配的元 素,XML解析器会产生一个错误。
<property name="book"> <ref local="book1"/> </property>
基于注解的依赖注入
基于注解(Annotation)的配置有越来越流行的趋势,Spring 2.5 顺 应这种趋势,提供了完全基于注释配置 Bean、装配 Bean 的功能,学 员可以使用基于注解的 Spring IoC 替换原来基于 XML 的配置。 注解配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效 减少配置的工作。 注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件, 大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放在一起,有助于增强程序的内聚性。而采用独立的 XML 配置文 件,程序员在编写一个功能时,往往需要在程序文件和配置文件中不停 切换,这种思维上的不连贯会降低开发效率。 因此在很多情况下,注解配置比 XML 配置更受欢迎,注解配置有进一 步流行的趋势。Spring 2.5 的一大增强就是引入了很多注释类,现在我 们已经可以使用注解配置完成大部分 XML 配置的功能。
Spring架构
依赖注入的类型
构造器注入
通过类的构造方法注入依赖关系 使用<constructor-arg> 元素
设值方法注入
通过类的setter方法注入依赖关系 使用<property>元素
依赖注入的配置
注入基本数据类型,字符串等。
在<property>或<constructor-arg>元素中使用<value> 在<property>或<constructor-arg>元素中ቤተ መጻሕፍቲ ባይዱ上value属性
<property name=“lists”> <list> <value></value> <ref/> </list> </property> <property name=“maps”> <map> <entry> <key> <value></value> </key> <value></value> </entry> </map> </property> <property name=“sets”> <set> <value></value> <ref/> </set> </property> <property name=“emails”> <props> <prop key=“support”> support@fendoujiaoyu.com </prop> </props> </property>
如果想对所有的Bean都延迟初始化,可以修改<beans>元 素
<beans default-lazy-init=“true”>
Bean的生命周期
Bean的生命周期包括:Bean的定义、Bean的初始化、 Bean的使用、Bean的销毁。 Bean的初始化可以通过指定init-method属性来完成
bean定义继承父bean定义,它可以覆盖父bean的一些值,或者 它需要的值。
三种实例化Bean的方式 使用类构造器实例化,也就是没有参数的 构造函数来建立Bean的实例
<bean id="sample" class="com.fendou.service.impl.SampleImpl"/>
使用静态工厂方法实例化
Bean的作用域
Singleton。在Spring中取得的实例被默认为Singleton (单例)
<bean id=“sample” class=“com.fendou.service.impl.SampleImpl“ scope=“singleton”/> <bean id=“sample” class=“com.fendou.service.impl.SampleImpl“ singleton=“true”/>
Spring
轻量级容器框架
Spring简介
Spring是一个控制反转(Ioc)和面向切面编程 (AOP)的轻量级的容器,为软件开发提供全方 位支持的应用程序框架。 控制反转(Inversion of Control,IoC)与依赖注 入(Dependency Injection,DI)。由容器来管理 对象之间的依赖关系(而不是对象本身来管理), 就叫“控制反转”或“依赖注入”.