spring2.5之后为了简化命名空间.xml文件的配置,引入p命名空间,需要先导入命名空间

来源:互联网 发布:读书笔记什么软件好 编辑:程序博客网 时间:2024/05/19 10:36

1:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
                    
  <!-- 配置bean class:bean的全类名,通过反射的方式在IOC容器实例化对象,中id是唯一的-->
   <bean id="helloWorld" class="com.study.bean.HelloWorld">
   <property name="name" value="Spring" />
   </bean>
    <!--通过构造方法配置属性 -->
  <bean id="car" class="com.study.bean.Car">
    <constructor-arg value="奔驰" type="java.lang.String"></constructor-arg>
    <constructor-arg type="java.lang.String">
    <!-- 如果字面值包含特殊字符可以使用<![CDATA[]]>包裹起来 -->
      <value><![CDATA[<Shanghai^>]]></value>
    </constructor-arg>
    <constructor-arg value="300000" type="double"></constructor-arg>
    <property name="maxSpeed" value="100" />
  </bean>
   <bean id="car2" class="com.study.bean.Car">
    <constructor-arg value="奔驰" type="java.lang.String"></constructor-arg>
    <constructor-arg value="上海" type="java.lang.String"></constructor-arg>
    <constructor-arg value="100" type="int"></constructor-arg>
    <property name="price" value="5000000" />
  </bean>
  <bean id="person" class="com.study.bean.Person">
    <property name="name" value="Tom"></property>
    <property name="age" value="24"></property>
    <!--可以使用property的ref属性建立bean之间的引用关系 -->
   <!--  <property name="car" ref="car2"></property> -->
    <!--内部Bean-->
    <property name="car">
      <bean class="com.study.bean.Car">
       <constructor-arg value="奥迪" type="java.lang.String"></constructor-arg>
       <constructor-arg value="北京" type="java.lang.String"></constructor-arg>
        <constructor-arg value="80" type="int"></constructor-arg>
         <property name="price" value="300000" />
      </bean>
    </property>
  </bean>
   <!--测试集合属性  -->
    <bean id="persons" class="com.study.bean.Person">
     <property name="name" value="Smith"></property>
     <property name="age" value="27"></property>
     <property name="cars">
       <list>
          <ref bean="car"/>
          <ref bean="car2"/>
           <bean class="com.study.bean.Car">
              <constructor-arg value="奥迪" type="java.lang.String"></constructor-arg>
              <constructor-arg value="北京" type="java.lang.String"></constructor-arg>
              <constructor-arg value="80" type="int"></constructor-arg>
              <property name="price" value="300000" />
            </bean>
            </list>
            </property>
      </bean>
      <!-- 配置Properties属性值 -->
        <!--使用props和prop子节点来为Properties属性赋值  -->
      <bean id="DataSource" class="com.study.bean.DataSource">
         <property name="properties">
            <props>
                <prop key="username">root</prop>
                <prop key="password">123456</prop>
                <prop key="jdbcUrl">jdbc:mysql:localhost</prop>
                <prop key="driverClass">com.mysql.jdbc.Driver</prop>
            </props>
            </property>
      </bean>
      <!-- 配置单例的集合bean以提供多个bean进行引用 需要导入命名空间-->
        <!-- <util:list id="cars">
           <bean>
              <ref bean="car"/>
              <ref bean="car2/">
           </bean>
        </util:list> -->
       <!--通过p命名空间为属性赋值,需要导入p命名空间相对于传统配置方式更加简洁 --> 
      <!--  <bean id="person3" class="com.study.bean.Person"
         p:age="30" p:name="Alice" p:cars-ref="cars">
        </bean>  -->
        <!-- 配置单例的集合bean 用于其它多个bean的引用需要导入util命名空间-->
        <util:list id="cars">
          <ref bean="car"/>
          <ref bean="car2"/>
           <bean class="com.study.bean.Car">
              <constructor-arg value="奥迪" type="java.lang.String"></constructor-arg>
              <constructor-arg value="北京" type="java.lang.String"></constructor-arg>
              <constructor-arg value="80" type="int"></constructor-arg>
              <property name="price" value="300000" />
            </bean>
        </util:list>
       <bean id="persons1" class="com.study.bean.Person">
     <property name="name" value="Jack"></property>
     <property name="age" value="99"></property>
     <property name="cars" ref="cars"> </property>
     </bean>
     <!--spring2.5之后为了简化命名空间.xml文件的配置,引入p命名空间,需要先导入命名空间  -->
     <bean id="persons2" class="com.study.bean.Person" p:age="30"
     p:name="命名空间" p:cars-ref="cars"> 
     </bean>
</beans>

 2:Car

package com.study.bean;


public class Car {
    
private String brand;
private String corp;
private double price;
private int maxSpeed;
public Car() {
System.out.println("Car's Constructor...");
}

public String getBrand() {
return brand;
}


public void setBrand(String brand) {
this.brand = brand;
}


public String getCorp() {
return corp;
}


public void setCorp(String corp) {
this.corp = corp;
}


public double getPrice() {
return price;
}


public void setPrice(double price) {
this.price = price;
}


public int getMaxSpeed() {
return maxSpeed;
}


public void setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
}


public Car(String brand, String corp, int maxSpeed) {
super();
this.brand = brand;
this.corp = corp;
this.maxSpeed = maxSpeed;
}


public Car(String brand, String corp, double price) {
super();
this.brand = brand;
this.corp = corp;
this.price = price;
}
public String toString() {
return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price
+ ", maxSpeed=" + maxSpeed + "]";
}

}

   Person

package com.study.bean;


import java.util.List;


public class Person {
   private String name;
   private int age;
   private Car car;
   private List<Car> cars;
public Person() {
}
public String getName() {
return name;
}


public List<Car> getCars() {
return cars;
}
public void setCars(List<Car> cars) {
this.cars = cars;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", cars="
+ cars + "]";
}


}

  4:Main

  package com.study.bean;


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


public class TestMain {


public static void main(String[] args) {

ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
 Person persons2=(Person) ctx.getBean("persons2");
 System.out.println(persons2);
}


}

0 0