首页 专题 文章 代码 归档
正确的为各种属性赋值
2020.01.23 09:55 2020.01.23 09:56

为各种属性赋值

本节我们来为实体类中的各种属性赋值!

在此之前,我们需要为实体类(Student)添加各种成员变量,也即各种类型的属性

修改原来的类

Student

import java.util.List;

public class Student {
    private String name;
    private String sno;
    /*为student类添加各种类型*/
    private Car car;
    private List<Book> books;
    private Map<String, Object> map;
    private Properties properties;
}

注意:您添加了这些属性,还需要为其设置getter和setter!这里篇幅原因,就没贴出代码!

Car

public class Car {
    private String name;

    private Integer price;

    private String color;

}

Book

public class Book {
    private String name;
    private String price;
}

测试null类型

我们在此新建了Test02.java的测试类,不在以前的Test01.java中测试。

我们也新建了另一个配置文件:spring-ioc-2.xml

为了以后放出代码给大家参考时,不乱!

A. 测试1

spring-ioc.xml

<bean class="com.misiai.bean.Student" id="student01">

</bean>

Test02

/*测试bean中,为各种类型赋值*/
public class Test02 {
    ApplicationContext ap = new ClassPathXmlApplicationContext("spring-ioc-2.xml");

    @Test
    public void test01() {
        Student student01 = (Student) ap.getBean("student01");
        System.out.println("student01 = " + student01);
    }
}

截图-1579667517

结论:

默认如果都不赋值,引用类型都是null,基本类型都是默认值。

B. 测试2

<bean class="com.misiai.bean.Student" id="student01">
    <property name="name" value="null"/>
</bean>

如果我们把value值给为null,那么他就是null了吗?

@Test
public void test01() {
    Student student01 = (Student) ap.getBean("student01");
    // System.out.println("student01 = " + student01);
    System.out.println(student01.getName() == null);
}

结果:

截图-1579667699

结论:

所有复杂的类型(引用)赋值,都需要用标签赋值!

修改:

<bean class="com.misiai.bean.Student" id="student01">
    <property name="name">
        <null/>
    </property>
</bean>

截图-1579668084

测试对象类型

为Student对象的Car属性赋值,这里又有两种方法。

方法1:

方法1即在内部再写一个bean,如下:

<bean class="com.misiai.bean.Student" id="student01">
    <property name="name">
        <null/>
    </property>
    <property name="car">
        <bean class="com.misiai.bean.Car">
            <property name="name" value="BWM"/>
            <property name="price" value="40000"/>
            <property name="color" value="黑色"/>
        </bean>
    </property>
</bean>

方法2:

方法2即把bean写在外部,如下:

<bean id="car" class="com.misiai.bean.Car">
    <property name="name" value="BWM"/>
    <property name="price" value="40000"/>
    <property name="color" value="黑色"/>
</bean>
<bean class="com.misiai.bean.Student" id="student01">
    <property name="name">
        <null/>
    </property>
    <property name="car" ref="car"/>
</bean>

注意:写在外部就需要给出一个id,然后在需要用到的时候,用ref引用,ref即reference

测试

@Test
public void test01() {
    Student student01 = (Student) ap.getBean("student01");
    // System.out.println("student01 = " + student01);
    // System.out.println(student01.getName() == null);
    System.out.println(student01.getCar());
}

截图-1579668574

Tips:

既然是引用,如果你修改了容器的Car,那么Student中引用的Car也必定跟随着改变!

为List类型赋值

为List类型赋值,我们就需要使用list标签!

<bean id="book01" class="com.misiai.bean.Book">
    <property name="name" value="一千零一夜"/>
</bean>
<bean id="student02" class="com.misiai.bean.Student">
    <property name="books">
        <list>
            <!--第一种,添加内部bean-->
            <bean class="com.misiai.bean.Book" p:name="10万个为什么"/>
            <!--第二种,引用外部-->
            <ref bean="book01"/>
        </list>
    </property>
</bean>

测试:

@Test
public void test02() {
    Student student02 = ap.getBean("student02", Student.class);
    System.out.println(student02.getBooks());
}

结果:

截图-1579669477

为Map类型赋值

为Map类型赋值,我们就需要使用map标签!

<bean id="student02" class="com.misiai.bean.Student">
    <property name="map">
        <map>
            <!--一个entry就代表一个键值对-->
            <entry key="key01" value="迷思爱"/>
            <entry key="key02" value="学习乐园"/>
            <!--引用外部的bean 的 id-->
            <entry key="key03" value-ref="book01"/>
            <!--内部bean-->
            <entry key="key04">
                <bean class="com.misiai.bean.Car">
                    <property name="name" value="奔驰"/>
                    <property name="color" value="银色"/>
                </bean>
            </entry>
        </map>
    </property>
</bean>

测试:

@Test
public void test02() {
    Student student02 = ap.getBean("student02", Student.class);
    System.out.println(student02.getMap());
}

结果:

截图-1579669950

为Properties类型赋值

为Properties类型赋值,我们就需要使用props标签!

<bean id="student02" class="com.misiai.bean.Student">
    <property name="properties">
        <props>
            <prop key="username">misiai</prop>
            <prop key="password">Kuan</prop>
        </props>
    </property>
</bean>

测试:

@Test
public void test02() {
    Student student02 = ap.getBean("student02", Student.class);
    // System.out.println(student02.getMap());
    System.out.println(student02.getProperties());
}

结果:

截图-1579670364

本节阅读完毕! (分享
二维码图片 扫描关注我们哟