Spring框架学习02——在xml文件里面为bean的属性赋值

实验一:按照bean的类型从IOC容器里面获取bean(这样就不需要强制转换)

    @Test
    public void test02(){
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        Person person01 = context.getBean(Person.class);
        System.out.println(person01);
    }

如果xml文件里面有两个相同类型的bean,如Person类型有两个bean,再向上面那样之指定类型获取bean就会报NoUniqueBeanDefinitionException错误

<!--class:要注册组件的全类名; bean:这个对象的唯一标识-->
    <bean id = "person01" class="com.sf.jin.Person">
        <!--使用property标签为Person对象的属性赋值-->
        <property name="name" value="zhansgan"></property>
        <property name="age" value="12"></property>
        <property name="gender" value="man"></property>
        <property name="email" value="183@qq.com"></property>
    </bean>

    <bean id = "person02" class="com.sf.jin.Person">
        <!--使用property标签为Person对象的属性赋值-->
        <property name="name" value="lisi"></property>
        <property name="age" value="12"></property>
        <property name="gender" value="man"></property>
        <property name="email" value="183@qq.com"></property>
    </bean>

那么就可以指定bean的id来获取bean,如下指定了Person类型的person01 就可以获取了

    @Test
    public void test02(){
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        Person person01 = context.getBean("person01",Person.class);
        System.out.println(person01);
    }

实验二:通过有参构造器创建对象并为bean的属性赋值

xml配置文件里面通过constructor-arg标签给属性赋值

    <bean id = "person02" class="com.sf.jin.Person">
        <!--使用有参构造器创建对象并为bean的属性赋值-->
        <constructor-arg name="name" value="zhansgan"></constructor-arg>
        <constructor-arg name="age" value="12"></constructor-arg>
        <constructor-arg name="email" value="zhansgan@qq.com"></constructor-arg>
        <constructor-arg name="gender" value="man"></constructor-arg>
    </bean>
    @Test
    public void test03(){
        ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
        System.out.println("IOC容器创建成功");
        Person person = context.getBean("person02",Person.class);
        System.out.println(person);
    }

输出结果为:

有参构造器
IOC容器创建成功
Person{name='zhansgan', age=12, email='zhansgan@qq.com', gender='man'} 

在IOC容器创建完成之前,bean就已经通过调用有参构造器创建成功了。 

实验三:正确地为各种属性赋值

(1)为属性赋值为null,需要使用标签,不能使用value="null",如下为name赋值为null,使用了<null></null>标签

    <bean id = "person03" class="com.sf.jin.Person">
        <!--正确为各种属性赋值,为属性赋值为null值,需要使用标签,不能使用value="null"-->
        <property name="name">
            <null></null>
        </property>

        <property name="age" value="12"></property>
        <property name="gender" value="man"></property>
        <property name="email" value="183@qq.com"></property>
    </bean>

(2)ref引用外部bean,person03引用了car01。也可以使用内部的bean,对car属性进行赋值

    <bean id = "car01" class="com.sf.jin.Car">
        <property name="carName" value="宝马"></property>
        <property name="price" value="200000"></property>
        <property name="color" value="blue"></property>
    </bean>

    <bean id = "person03" class="com.sf.jin.Person">
        <!--正确为各种属性赋值,为属性赋值为null值,需要使用标签,不能使用value="null"-->
        <property name="name">
            <null></null>
        </property>

        <!--ref使用外部的值-->
        <property name="car" ref="car01"></property>

        <!--使用内部的bean-->
        <property name="car">
            <bean class="com.sf.jin.Car">
                <property name="carName" value="奔驰"></property>
            </bean>
        </property>
    </bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值