文章目录
bean的高级配置
一.parent继承属性
1.普通父bean-子bean继承
<bean id="dept" class="com.attribute.Dept">
<property name="did" value="101"></property>
<property name="dname" value="研发部"></property>
</bean>
<bean id="emp04" class="com.attribute.Emp" >
<property name="eid" value="15145104"></property>
<property name="name" value="FengLei"></property>
<property name="dept" ref="dept"></property>
</bean>
<!-- bean继承:子类,将与父类重合的属性覆盖掉 未重合的继承过来 -->
<bean id="emp05" parent="emp04" >
<property name="eid" value="15145105"></property>
<property name="name" value="Jia Huaisheng"></property>
</bean>
2.抽象bean-子bean继承()
bean模板:abstract属性为true,表示一个抽象bean不能被实例化
<bean id="emp06" class="com.attribute.Emp" abstract="true">
<property name="eid" value="15145106"></property>
<property name="name" value="Huang Liping"></property>
<property name="dept" ref="dept"></property>
</bean>
<bean id="emp07" parent="emp06" >
<property name="eid" value="15145107"></property>
<property name="name" value="Jin Ji"></property>
</bean>
<bean id="emp08" parent="emp06" >
<property name="eid" value="15145108"></property>
<property name="name" value="Liu Jiacan"></property>
</bean>
二.depends-on依赖属性
创建一个bean时确保另一个bean也被创建,依赖不等于引用,即使依赖也可以不引用
<bean id="emp09" class="com.attribute.Emp" depends-on="dept">
<property name="eid" value="15145109"></property>
<property name="name" value="Liu Renlong"></property>
</bean>
三.scope作用域属性
1.singleton单实例
在IOC容器里声明的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例:所有后续的getBean()调用和bean引用都将返回这个唯一的bean实例。该作用域被称为singleton,它是所有bean的默认作用域
<bean id="dept02" class="com.attribute.Dept" scope="singleton">
<property name="did" value="102"></property>
<property name="dname" value="测试部"></property>
</bean>
Dept dept02=ac.getBean("dept02",Dept.class);
System.out.println(dept02);
Dept dept02_singleton=ac.getBean("dept02",Dept.class);
System.out.println(dept02_singleton);
运行结果:表示引用的是同一个实例
2.prototype多实例
当bean的作用域为单例时,Spring会在IOC容器对象创建时就创建bean的对象实例。而当bean的作用域为prototype时,IOC容器在获取bean的实例时创建bean的实例对象(单例与多例创建区别)
<bean id="dept03" class="com.attribute.Dept" scope="prototype">
<property name="did" value="103"></property>
<property name="dname" value="市场部"></property>
</bean>
Dept dept03=ac.getBean("dept03",Dept.class);
System.out.println(dept03);
Dept dept03_prototype=ac.getBean("dept03",Dept.class);
System.out.println(dept03_prototype);
运行结果:表示引用的是不同的实例