Spring框架

2. 配置信息的继承

<!-- 以emp01作为父bean,继承后可以省略公共属性值的配置 -->

<bean id="emp02" parent="emp01">

         <property name="empId" value="1002"/>

         <property name="empName" value="Jerry"/>

         <property name="age" value="25"/>

</bean>

         Spring允许继承bean的配置,被继承的bean称为父bean。继承这个父bean的bean       称为子bean

         子bean从父bean中继承配置,包括bean的属性配置

         子bean也可以覆盖从父bean继承过来的配置

 

3. 补充说明

         父bean可以作为配置模板,也可以作为bean实例。若只想把父bean作为模板,可以设置<bean>的abstract 属性为true,这样Spring将不会实例化这个bean

         如果一个bean的class属性没有指定,则必须是抽象bean

         并不是<bean>元素里的所有属性都会被继承。比如:autowire,abstract等。

也可以忽略父bean的class属性,让子bean指定自己的类,而共享相同的属性配置。    但     此时abstract必须设为true。

 

2.6.2 bean之间的依赖

         有的时候创建一个bean的时候需要保证另外一个bean也被创建,这时我们称前面的bean对后面的bean有依赖。例如:要求创建Employee对象的时候必须创建Department。       这里需要注意的是依赖关系不等于引用关系,Employee即使依赖Department也可以不引用它。

<bean id="emp03" class="com.atguigu.parent.bean.Employee" depends-on="dept">

         <property name="empId" value="1003"/>

         <property name="empName" value="Kate"/>

         <property name="age" value="21"/>

</bean>

 

2.7  bean的作用域★

         在Spring中,可以在<bean>元素的scope属性里设置bean的作用域,以决定这个bean是单实例的还是多实例的。

         默认情况下,Spring只为每个在IOC容器里声明的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例:所有后续的getBean()调用和bean引用都将返回这个唯一的bean实例。该作用域被称为singleton,它是所有bean的默认作用域。

 

         当bean的作用域为单例时,Spring会在IOC容器对象创建时就创建bean的对象实例。而当bean的作用域为prototype时,IOC容器在获取bean的实例时创建bean的实例对象。