1.级联属性
在使用外部引用的同时,修改参数数值
注意:bean中的属性(car01中的price也会变成90000)也会被修改,因为是引用
<bean id="car01" class="com.lzt.bean.Car">
<property name="carName" value="baoma"></property>
<property name="color" value="baise"></property>
<property name="price" value="300000"></property>
</bean>
<!-- 级联属性(属性的属性)赋值 -->
<bean id="person04" class="com.lzt.bean.Person">
<!-- 为car赋值的时候修改car价格
注意:bean中的属性(car01中的price也会变成90000)也会被修改,因为是引用 -->
<property name="car" ref="car01"></property>
<property name="car.price" value="90000"></property>
</bean>
2.abstract标签
添加abstract="true"这个标签的组件不能被获取实例,只能被别人用来继承。
下面就是一个abstract组件
<!-- 通过abstract属性创建模板bean abstract="true" 这个bean不能被获取实例,只能被别人用来继承-->
<bean class="com.lzt.bean.Person" name="person05" abstract="true" >
<property name="lastname" value="zhangsan"></property>
<property name="age" value="18"></property>
<property name="email" value="1@qq.com"></property>
<property name="gender" value="nan"></property>
</bean>
然后继承这个组件,会继承组件中所有属性。使用parent指定当前bean的配置信息继承于哪个。
<!-- 通过继承实现属性的重用 -->
<!-- parent:指定当前bean的配置信息继承于哪个 -->
<bean class="com.lzt.bean.Person" name="person06" parent="person05">
<property name="lastname" value="lisi"></property>
</bean>
3.depends-on标签
通过改变类之间的依赖关系,改变创建顺序。
<!-- bean的创建顺序就是按照配置顺序 -->
<!-- 改变bean的创建顺序 -->
<!-- bean之间的依赖(改变bean的创建顺序) -->
<bean class="com.lzt.bean.Person" name="person" depends-on="car,book"></bean>
<bean class="com.lzt.bean.Car" name="car"></bean>
<bean class="com.lzt.bean.Book" name="book"></bean>
4.scope标签
测试bean的作用域,创建单实例和多实例bean
bean的作用域:指定bean是否单实例
bean的scope属性:
prototype:多实例的
1.多实例的bean在容器启动完成之前,默认不会被创建
2.获取的时候创建bean实例
3.每次获取都会创建一个新的实例
singleton:单实例的 :默认是单实例
1.单实例的bean在容器启动完成之前,就已经创建好对象,保存在容器中了
2.任何获取都是获取之前创建好的对象
request:在web环境下,同一次请求创建一个Bean实例(没用)
session:在web环境下,同一次会话创建一个Bean实例(没用)
<bean class="com.lzt.bean.Book" name="book2" scope="prototype"></bean>