中午源码共享2-03bean配置_第1页
中午源码共享2-03bean配置_第2页
中午源码共享2-03bean配置_第3页
中午源码共享2-03bean配置_第4页
中午源码共享2-03bean配置_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

北京传智播客教育Bean配置(XML)李若亮北京传智播客教育Bean的初始化方式Spring提供三种方式初始化Bean对象类构造器初始化(主流)静态工厂方法初始化(非主流)实例工厂方法初始化(非主流)北京传智播客教育类构造器初始化Spring读取加载的Bean的class,调用对应class的无参构造方法,实例化对象如果没有提供无参构造方法,Spring将无法初始化Bean实例applicationContext.xml中配置对应的Bean <beanid="bean1"class="cn.itcast.spring.beanInit.Bean1"></bean>获取Bean对象使用ApplicationContext对象进行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean1bean1=(Bean1)ctx.getBean(“bean1");北京传智播客教育静态工厂初始化(了解)静态工厂初始化方法是为了兼容早期项目的改造,目前已经基本不使用此方式获取Bean实例Bean实例的获取需要使用工厂类中的静态方法获取提供工厂类,包含静态方法获取Bean实例publicclassBean2Factory{publicstaticBean2getInst(){ returnnewBean2();}}北京传智播客教育静态工厂初始化(了解)applicationContext.xml中配置对应的Bean<beanid="bean2"

class="cn.itcast.spring.beanInit.Bean2Factory"

factory-method="getInst"></bean>class:配置工厂类的全路径名factory-method:配置工厂类获取实例的静态方法名获取Bean对象使用ApplicationContext对象进行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean2bean2=(Bean2)ctx.getBean(“bean2");北京传智播客教育实例工厂初始化(了解)Bean实例的获取需要使用工厂类中的实例方法获取提供工厂类,包含实例方法获取Bean实例publicclassBean3Factory{publicBean3getInst(){ returnnewBean3();}}由于使用实例工厂需要先创建实例工厂的对象,因此在配置时,实例工厂将作为一个Bean出现,受Spring控制,配置实例工厂的Bean<beanid="bean3Factory"class="cn.itcast.spring.beanInit.Bean3Factory"></bean>北京传智播客教育实例工厂初始化(了解)applicationContext.xml中配置对应的Bean<beanid="bean3"

factory-bean=“bean3Factory”

factory-method="getInst"></bean>factory-bean:配置实例工厂Bean的名称factory-method:配置实例工厂类获取实例的方法名获取Bean对象使用ApplicationContext对象进行ApplicationContextctx=new ClassPathXmlApplicationContext("applicationContext.xml");Bean3bean3=(Bean3)ctx.getBean(“bean3");创建多个北京传智播客教育Bean的作用域Spring中的Bean默认创造出的对象是同一个,也就是单例的,通过修改bean元素的scope属性可以控制创建出的实例的作用域<beanid="beanScope"

scope="singleton" class="cn.itcast.spring.scope.Bean1"></bean>scope的取值可以使用如下值singletonprototyperequestsession/globalSession北京传智播客教育Bean的作用域Bean的5种作用域singleton(默认)(常用)创建出的实例为单例模式,在IoC容器中唯一prototype(常用)创建出的实例为非单例模式,每次获取bean得到新对象request(用于web开发)创建的实例绑定request对象,获取的bean作为request的属性session(用于web开发)创建的实例绑定session对象,获取的bean作为session的属性globalSession(用于分布式web开发)创建的实例绑定全局session对象,用于多个服务器间进行数据共享,获取的bean作为globalSession的属性北京传智播客教育Bean的生命周期Spring管理Bean实例的创建,通过配置的形式,设置两个回调方法,供开发者进行实例创建与销毁阶段的操作<bean id="lifeBean"

init-method="init"

destroy-method="destroy"

class="cn.itcast.spring.lifecycle.LifeBean"></bean>init-method:设置bean初始化对象的回调方法destroy-method:设置bean销毁对象的回调方法北京传智播客教育Bean的生命周期对应的Bean实体类中提供对应的回调方法publicvoidinit(){ System.out.println("LifeBeaninit...");}publicvoiddestory(){ System.out.println("LifeBeandestory...");}回调方法的作用:针对当前实例创建与销毁时,进行资源的初始化与重置,或进行资源的打开与关闭等操作。北京传智播客教育Bean的生命周期由于Bean的生命周期由Spring管理,Spring在没有关闭其IoC容器前,将不销毁所管理的Bean,因此必须将其手动关闭才可以销毁Spring所控制的Bean实例。ApplicationContext接口并不提供关闭操作,使用其子类对象ClassPathXmlApplicationContext进行关闭操作。注意:销毁操作只能用于单例的对象,即scope属性为singletion的对象北京传智播客教育Bean的属性注入Spring支持使用两种方式为Bean注入属性构造器注入setter注入(重点)北京传智播客教育构造器注入Bean属性Spring使用构造器注入Bean属性提供对应参数的构造器为Bean配置使用构造器注入北京传智播客教育setter注入Bean属性(重点)Spring使用属性对应的setter方法为属性注入资源为属性提供对应的setter方法配置北京传智播客教育setter注入Bean属性(重点)Spring注入引用类型的对象,必须保障该对象以Bean形式存在于IoC容器,受Spring控制为属性提供对应的setter方法配置北京传智播客教育p命名空间——属性注入的格式优化Spring2.5引入全新的命名空间p,有效的简化了配置的内容,缩短配置信息在约束信息中加入使用命名空间p属性注入格式优化常量属性格式: p:<属性名>=“属性值”引用bean对象格式: p:<属性名>-ref=“bean名称”北京传智播客教育p命名空间——属性注入的格式优化优化前配置优化后配置北京传智播客教育SpEL——属性注入的格式优化Spring3.0引入全新的SpEL(SpringExpressionLanguage)Spring表达式语言,使用表达式语言可以使属性注入格式进行进一步简化,同时支持包括对象注入、集合注入、集合访问、实例方法引用、静态方法引用等多种格式。详情参考《Spring_表达式语言.pdf》北京传智播客教育SpEL——属性注入的格式优化所有格式统一使用value=“********”常量 #{10}#{3.14}#{2e5}#{‘itcast’}引用Bean #{beanId} 引用Bean属性 #{beanIpertyName}引用Bean方法 beanId.methodName().method2()引用静态方法 T(java.lang.Math).PI运算符支持 #{3lt4==4ge3}正则表达式支持 #{matches‘[a-z]{6,}’}集合支持 #{likes[3]}北京传智播客教育setter注入集合属性(了解)Spring属性注入还支持集合对象的使用,常见的集合对象注入如下List/数组SetMapProperties北京传智播客教育setter注入集合List/数组Bean对象声明集合/数组对象,提供对应setter方法List集合与数组的配置格式通用北京传智播客教育setter注入集合SetBean对象声明Set集合对象,提供对应setter方法北京传智播客教育setter注入集合MapBean对象声明Map集合对象,提供对应setter方法简化格式北京传智播客教育setter注入集合PropertiesBean对象声明Properties对象,提供setter方法北京传智播客教育团队开发合作模式当开发人员过多时,如果所有bean都配置到同一个配置文件applicationContext.xml中,会引起文件巨大,查找不方便的现象出现。Spring提供了团队开发的xml配置格式将多个bean配置到不同的applicationContext.xml文件中文件名命名规范:applicationContext-功能模块名.xmlapplicationContext-user.xmlapplicationContext-order.xmlapplicationContext-device.xml提供一个主配置文件将所有的公共bean配置到主配置文件中

applicationContext.xml北京传智播客教育团队开发合作模式——导入配置文件applicationContext-user.xmlapplicationContext.xml导入主配置文件Bean的属性名北京传智播客教育获取多个xml配置对象获取ApplicationContext对象时,可是使用下列格式一次性加载多个XML文件格式一:使用import将多个配置文件导入到一个文件中,加载最终的配置文件ApplicationContextctx=newClassPathXmlApplicationContext("applicationContext-sub.xml");格式二:使用对象的参数传递多个配置文件名ApplicationContextctx=newClassPathXmlApplicationContext( "applicationContext-sub.xml","applicationContext.xml");格式三:使用对象的参数传递配置文件名数组ApplicationContextctx=newClassPathXmlApplicationContext( newString[]{"applicationContext-sub.xml","applicationContext.xml"});北京传智播客教育团队开发冲突问题当一个配置文件中导入了多个配置文件,有可能引发bean的名称定义冲突问

温馨提示

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

评论

0/150

提交评论