Spring学习-day02

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring学习-day02相关的知识,希望对你有一定的参考价值。

    <!-- 属性值也可以使用 value 子节点进行配置,如果含有特殊字符使用<![CDATA[<>]]>包裹起来 -->
    <bean id="car1" class="com.atguigu.spring.beans.Car">
        <constructor-arg value="2000" type="double"></constructor-arg>
        <constructor-arg type="java.lang.String">
            <value><![CDATA[<shanghai^>]]></value>
        </constructor-arg>
        <constructor-arg value="100" type="int"></constructor-arg>
    </bean>

    <bean id="person" class="com.atguigu.spring.beans.Person">
        <property name="name" value="Tom"></property>
        <property name="age" value="20"></property>
        <!-- 可以使用 property 的 ref 属性建立 bean 之间的引用关系 -->
        <!--
            1. <property name="car" ref="car1"></property>
            2. 使用 ref 子节点配置
                 <property name="car">
                    <ref bean="car"/>
                 </property>
         -->

         <!-- 使用内部  bean, 不能在外部使用只能在内部使用  -->
         <property name="car">
            <bean class="com.atguigu.spring.beans.Car">
                <constructor-arg value="1000" type="double"></constructor-arg>
                <constructor-arg value="Ford"></constructor-arg>
                <constructor-arg value="changan"></constructor-arg>
            </bean>
         </property>
    </bean>

    <bean id="person2" class="com.atguigu.spring.beans.Person">
        <constructor-arg value="xiaoming"></constructor-arg>
        <constructor-arg value="18"></constructor-arg>
        <!-- 
        测试 null 
            <constructor-arg> <null/> </constructor-arg>
         -->

        <!-- 为级联属性赋值 . 注意:属性需要先初始化然后才可以为级联属性赋值,否则产生异常,与struts2不同-->
        <constructor-arg ref="car"></constructor-arg>
        <property name="car.maxSpeed" value="20"></property>
    </bean>

    <!-- 测试如何配置集合属性 -->
    <!-- list 集合 -->
    <bean id="person3" class="com.atguigu.spring.beans.collection.Person">
        <property name="name" value="Mark" ></property>
        <property name="age" value="22"></property>
        <!--  
        <property name="cars">
            <list>
                <ref bean="car"/>
                <ref bean="car1"/>
            </list>
        </property>
        -->
    </bean>

    <!-- map 集合 -->
    <bean id="mapPerson" class="com.atguigu.spring.beans.collection.Person">
        <property name="name" value="TT"></property>
        <property name="age" value="23"></property>
        <!-- 使用 map 节点 及 map 的 entry 子节点配置 Map 类型的成员变量 -->
        <property name="cars1">
            <map>
                <entry key="AAA" value-ref="car"></entry>
                <entry key="BBB" value-ref="car1"></entry>
            </map>
        </property>
    </bean>

    <!-- 配置 Properties 属性值 -->
    <bean id="dataSource" class="com.atguigu.spring.beans.collection.DataSource">
        <property name="properties">
            <!-- 使用 props 和 prop 子节点来为 Properties 属性赋值 -->
            <props>
                <prop key="user">root</prop>
                <prop key="password">1234</prop>
                <prop key="jdbcUrl">jdbc:mysql:///test</prop>
                <prop key="driverClass">com.mysql.jdbc.Driver</prop>
            </props>
        </property>     
    </bean>

    <!-- 配置独立的集合 bean,以供多个 bean 进行引用,需要导入 util 命名空间 -->
    <util:list id="cars">
        <ref bean="car1"/>
        <ref bean="car"/>
    </util:list>

    <bean id="person4" class="com.atguigu.spring.beans.collection.Person">
        <property name="name" value="jack"></property>
        <property name="age" value="11"></property>
        <property name="cars1" ref="cars"></property>
    </bean>
package com.atguigu.spring.beans.collection;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

    public static void main(String[] args) {
        //创建 spring 的 IOC容器对象
        ApplicationContext ctx = new ClassPathXmlApplicationContext("one.xml");

        //从 IOC 容器对象中获取 Bean 的实例
//      Person person = (Person) ctx.getBean("person3");
//      Person person2 = (Person) ctx.getBean("mapPerson");
//      DataSource dataSource = ctx.getBean(DataSource.class);
        Person person4 = (Person) ctx.getBean("person4");

        //打印
        //System.out.println(person);
//      System.out.println(person2);
//      System.out.println(dataSource);
        System.out.println(person4);
    }

}
package com.atguigu.spring.beans.collection;

import java.util.List;
import java.util.Map;

import com.atguigu.spring.beans.Car;

public class Person {
    private String name;
    private int age;
    //private List<Car> cars;
    private Map<String,Car> cars1;

    public Map<String, Car> getCars1() {
        return cars1;
    }
    public void setCars1(Map<String, Car> cars1) {
        this.cars1 = cars1;
    }

    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 List<Car> getCars() {
//      return cars;
//  }
//  public void setCars(List<Car> cars) {
//      this.cars = cars;
//  }

//  @Override
//  public String toString() {
//      return "Person [name=" + name + ", age=" + age + ", cars=" + cars1 + "]";
//  }

//  public Person(String name, int age, List<Car> cars) {
//      super();
//      this.name = name;
//      this.age = age;
//      this.cars = cars;
//  }
    public Person() {
        super();
    }

    public Person(String name, int age, Map<String, Car> cars1) {
        super();
        this.name = name;
        this.age = age;
        this.cars1 = cars1;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", cars1=" + cars1 + "]";
    }

}

以上是关于Spring学习-day02的主要内容,如果未能解决你的问题,请参考以下文章

day02-Spring基本介绍02

Spring源码学习:day2

Spring学习-day13

Spring boot:thymeleaf 没有正确渲染片段

day02学习总结(20170214)

Spring day02笔记