>

装配bean(继承装配)

- 编辑:广西快乐十分 -

装配bean(继承装配)

假如一个类继承了其他的类,那么它的bean该如何配置?

装配:创建应用对象之间协作关系的行为

 

1、自动化装配bean:(组件扫描+自动装配)

假如我们有一个父类:

在类中使用注解@component   即告知spring为该类创建bean

启用组件扫描:<context:component-scan>

package com.extendClass.bean;

Spring配置:xml配置、基于java注解配置

 

xml配置:

public class Father {

    beans命名空间

protected String name;

 <beans>

<bean  id=""//id为bean 名称由spring容器管理 注意名称不一定是类名

class=""

scope=“singleton/prototype”//注意:singleton 默认  所有的spring  bean是单例(即容器分配一个bean时,总是返回同一个实例)

init-method=""//bean实例化后调用

detory-method=""//bean从容器中移除前调用

p:属性名=“属性值”//使用命名空间p装配属性 

>      

//构造器注入

      <constructor-arg value="15" /> //为构造函数赋予参数

      <constructor-arg ref=""/>//构造函数的参数不是基本类型,而是对象

      <factory-method=" "/>//调用一个指定的静态方法,代替构造函数来创建实例                                           (例如:单例类)

//调用属性的setter方法来注入

       <property name="属性名" value=“属性值”/>//注入简单值

       <propety name="" ref=""/>//引用其他bean

       <propety name="">

                   <bean  class=""/>//内部bean通过直接申明一个<bean>元素作为                                                  propety的子元素实现的

       </propety>

         //装配集合(list、set)

      <propety name="">

             <list/set>//可以互换

                    <ref bean=""/>

             </list>

      </propety>

//装配集合(map)

        <propety name="">

                <map>

                          <entry key=""    value-ref=""/>

                </map>

        </propety>

//装配propeties(键和值只能是string)

            <propety name="">

                     <props>

                               <prop key="">string值</prop>

                     </props>

           </propety>

//装配空值

          <propety name="">

                      <null/>

          </propety>

 </bean>

</beans>

protected int age;

使用表达式装配

private String company;

spring表达式语言:SpEL     在运行期将值装配到bean的属性或构造器参数中

public void wealth(){

1、使用界定符#{}将属性装配到bean中

System.out.println("很多钱");

<propety name="" value=#{常数/bean/bean.属性/bean.方法       注:可以使用多种运算符}>

}

2、使用T()运算符调用类作用域的方法和常量

public void house(){

<propety name="" value=#{T(java.util.Math).radom()}>

System.out.println("很多房产");

基于java注解配置:

}

public void car(){

System.out.println("很多车");

}

public String getName(){

return this.name;

}

public void setName(String new_name){

this.name = new_name;

}

public int getAge(){

return this.age;

}

public void setAge(int new_age){

this.age = new_age;

}

 

public String getCompany() {

return company;

}

 

public void setCompany(String company) {

this.company = company;

}

}

 

 

有一个子类Son.java 继承了这个父类

package com.extendClass.bean;

 

public class Son extends Father {

private String sonName;

private int sonAge;

本文由房产发布,转载请注明来源:装配bean(继承装配)