Bean配置(XML)【理解】【应用】【重点】

1.Bean对象初始化方式有三种

构造器初始化:

Bean对应的类必须提供一个默认无参可访问的构造方法

静态工厂初始化【了解】

提供一个工厂类,使用其中的静态方法获取对象

<bean id="userService2"

class="cn.itcast.bean.UserStataicFactory" 配置中所配置的class配置成工厂类的类名 factory-method="getInst" 配置工厂类中的创建实例的静态方法

>

</bean>

实例工厂初始化【了解】

提供一个实例工厂类,使用其中的实例方法获取对象。由于该工厂类本身需要创建对象,因此该

对象必须受Spring控制,所以必须配置该工厂类为Bean

<!—实例化工厂Bean -->

<bean id="uf" class="cn.itcast.bean.UserFactory"></bean>

<!--使用实例工厂创建Bean -->

<!--factory-bean: 配置实例工厂在Spring范围内对应的Bean的id名称-->

<!--factory-method:配置工厂类中的创建实例的实例方法-->

<bean id="userService3" factory-bean="uf" factory-method="getInst2"></bean>

2.Bean的作用域

Spring初始化的Bean默认为单例模式,如果想修改成非单例模式需要修改Bean的作用范围 <bean id=”beanId” class=”BeanClassName” scope=”prototype”></bean>

scope属性:

singleton:单例

prototype:非单例

request:请求对象范围request.setAttribute("beanId",obj);

session:会话Session范围request.getSession().setAttribute("beanId",obj);

globalSession:全局会话

分布式服务器

3.Bean的生命周期

定义Bean初始化与销毁时的动作,属于回调方法配置

定义bean时指定两个回调方法,控制bean的初始化与销毁操作时执行的动作

<!-- init-method:初始化回调方法名,配置的方法必须由bean对象提供-->

<!-- destroy-method:销毁回调方法名,配置的方法必须由bean对象提供-->

<bean id="user" class="cn.itcast.lifecycle.User"

init-method="init" destroy-method="destroy" scope="prototype"></bean>

销毁操作只针对scope="singletion"的对象,对于非单例对象无效

单例对象的销毁是在IoC容器关闭时发生,使用ClassPathXmlApplicationContext对象close方法完成

非单例Bean对象的内存回收交由JVM完成——GC

4.Bean属性注入

注入方式有两种

构造器注入【了解】

A.提供对应的构造方法

B.配置中设置构造方法的参数 <!-- constructor-arg:使用构造器传递参数 --> <!-- value:赋值 --> <bean id="bean6" class="cn.itcast.bean.xml.Bean6"> <constructor-arg value="传智播客"/> <constructor-arg value="2014"/> </bean> 注意:如果类型匹配不成功,可以为配置中指定index索引属性,对应构造器中参数的位置 <bean id="bean6" class="cn.itcast.bean.xml.Bean6"> <constructor-arg index="0" value="2014" type="java.lang.Integer"></constructor-arg> <constructor-arg index="1" value="itcast" type="java.lang.String"></constructor-arg> </bean> 说明:构造器传参受构造器参数位置和类型的限定,因此不常使用 Setter注入【重点】 前提:setter注入要求Bean必须提供无参可访问构造方法 注入简单类型:String,基本数据类型封装类 A.提供对应要注入的属性 B.为每个要注入的属性提供对应的标准封装setter方法 C.在配置中为Bean指定要注入的属性,使用property元素 name=“属性名” value=”值” <property name="属性名" value="值"/> 注入引用类型:对象 A.为某个Bean注入引用类型的值,首先在Bean对应的类中声明对应的属性 private TeacherDAO dao; B.为每个要注入的属性提供对应的标准封装setter方法 (访问器) public void setDao(TeacherDAO dao) { this.dao = dao; } C.必须保障引入的对象是Spring控制的Bean <!-- 声明引用类型的资源为Bean --> <bean id="teacherDao" class="cn.itcast.di.setter.TeacherDAO"> </bean> D.在Bean的属性注入中,使用ref引用对应的资源 ref=”beanId/beanName” <!-- setter注入 --> <!-- name:属性名 --> <!-- value:简单类型的值 --> <!-- ref:引用别的Bean,beanId/beanName --> <bean id="bean7" class="cn.itcast.bean.xml.Bean7"> <property name="name" value="itcast"/> <property name="age" value="8"/> <property name="dao" ref="teacherDao"></property> </bean>

5.P命名空间的使用【了解】 Spring2.5提供了一种简化配置格式,P命名空间支持

A. xml头信息中引入对p命名空间的支持

xmlns:p="http://www.springframework.org/schema/p"

B. 将所有的属性注入property子元素全部修改为bean的属性 原始格式: <bean> <property name="propName" value="propValue"/> <property name="propName" ref="beanId"/> </bean> p空间格式: <bean p:propName="propValue" //注入简单类型 p:propName-ref="beanId" //注入引用类型 > </bean> 6. SpEl【了解】 Spring3.0引入全新的SpEL(Spring Expression Language)Spring表达式语言,支持各种格式语法格式,所有的属性注入全部使用value属性名 详情参考《Spring_表达式语言.pdf》 7.集合注入【了解】 Spring支持为Bean注入集合 List <property name="list"> <list> <value>Java</value> <value>Struts2</value> <value>Spring3</value> </list> </property> Set <property name="setCol"> <set> <value>张三</value> <value>张大三</value> <value>张小三</value> </set> </property> Map <property name="map"> <map> <entry> <key> <value>张三</value> </key> <value>中国</value> </entry> <entry><key> <value>约翰</value> </key> <value>中国</value> </entry> <entry> <key> <value>吴莫愁</value> </key> <value>榜单No.1</value> </entry> <entry key="小沈阳" value="榜单No.3"></entry> </map> </property> Properties <property name="props"> <props> <prop key="BIDU">百度</prop> <prop key="SINA">新浪</prop> <prop key="NQ">网秦</prop> </props> </property>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值