spring Ioc(Inversion of Control)创建对象相关内容

首先放上实体类:

public class Hello {

    private String name;
    private int age;
    public Hello(){
    }

    public Hello(String name){
        this.name=name;
    }

    public Hello(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void show(){
        System.out.println("hello," + age + "岁的" + name);
    }

}

然后就是xml文件内容

<!--bean就是java对象 , 由Spring创建和管理-->
    <!--根据无参构造函数创建对象-->
    <bean id="hello1" class="com.bh.pojo.Hello">
        <!--为属性name,age赋值-->
        <property name="name" value="xyongz1"/>
        <property name="age" value="20"/>
    </bean>
    <!--scope属性指定spring创建对象的方式:单个对象:singleton(spring默认),多个对象:prototype -->
    <bean id="hello1" class="com.bh.pojo.Hello" scope="prototype">
        <!--为属性name,age赋值-->
        <property name="name" value="xyongz1"/>
        <property name="age" value="20"/>
    </bean>
    <!--根据只有一个参数的构造函数创建对象-->
    <!--方法1:根据参数名称 String name-->
    <bean id="hello2_1" class="com.bh.pojo.Hello">
        <constructor-arg name="name" value="xyongz2_1"/>
        <property name="age" value="20"/>
    </bean>
    <!--方法2:根据参数下标(从0开始)-->
    <bean id="hello2_2" class="com.bh.pojo.Hello">
        <constructor-arg index="0" value="xyongz2_2"/>
        <property name="age" value="20"/>
    </bean>
    <!--方法3:根据参数类型-->
    <bean id="hello2_3" class="com.bh.pojo.Hello">
        <constructor-arg type="java.lang.String" value="xyongz2_3"/>
        <property name="age" value="20"/>
    </bean>
    <!--根据有两个参数的构造函数创建对象-->
    <bean id="hello3" class="com.bh.pojo.Hello">
        <constructor-arg name="name" value="xyongz3"/>
        <constructor-arg name="age" value="20"/>
    </bean>

总结:
1.如果要创建多个对象,记得给bean标签加上scope="prototype"
2.创建对象是多少个参数的构造函数就加几个constructor-arg标签
3.id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符,如果配置id,又配置了name,那么name是别名,name可以设置多个别名,可以用逗号,分号,空格隔开,如果不配置id和name可以根据applicationContext.getBean(.class)获取对象;

posted @ 2021-08-22 20:16  xyongz  阅读(51)  评论(0)    收藏  举报