1. 程式人生 > >spring多檔案配置,非單例手工注入,單例自動注入

spring多檔案配置,非單例手工注入,單例自動注入

一關聯類

1Student.java

package study.spring;

public class Student{

    private String id;
    private String name;
    private Address address;
    private Teacher teacher;
   
    public Student(){}
   
    public Student(String id,String name){
        this.id = id;
        this.name = name;
    }
   
    public String getId(){ return id; }
   
    public void setId(String id){ this.id = id; }
   
    public String getName(){ return name; }
   
    public void setName(String name){ this.name = name; }
   
    public String toString(){ return "id:"+id+".name:"+name+"/r/n address------------/r/n"+address+"/r/nteacher-------------/r/n"+teacher; }
   
    public Address getAddress(){ return address; }
   
    public void setAddress(Address address){ this.address = address; }
   
    public Teacher getTeacher(){ return teacher; }
   
    public void setTeacher(Teacher teacher){ this.teacher = teacher; }
   
}

2 Address.java

package study.spring;

public class Address{

    private String state;
    private String city;
    private String street;
   
    public Address(){}
   
    public String getState(){ return state; }
   
    public void setState(String state){ this.state = state; }
   
    public String getCity(){ return city; }
   
    public void setCity(String city){ this.city = city; }
   
    public String getStreet(){ return street; }
   
    public void setStreet(String street){ this.street = street; }
   
    public String toString(){ return "state:"+state+",city:"+city+",street:"+street; }
   
}

3 Teacher.java

package study.spring;

public class Teacher{

  private String name;
 
  public Teacher(){}
 
  public String getName(){ return name; }
 
  public void setName(String name){ this.name = name; }
 
  public String toString(){ return "teacher:"+name; }
 
}

二 配置檔案

1 beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "

http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <bean id="student" class="study.spring.Student" singleton="false">
      <constructor-arg>
          <value>999</value>
      </constructor-arg>
      <constructor-arg>
          <value>tomcat</value>
      </constructor-arg>
      <property name="teacher">
          <ref bean="teacher"/>
      </property>
  </bean>
</beans>

2 beans_address.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <bean id="address" class="study.spring.Address" singleton="false">
      <property name="state">
          <value>henan</value>
      </property>
      <property name="city">
          <value>anyang</value>
      </property>
      <property name="street">
          <value>zhaozhangchun56hao</value>
      </property>
  </bean>
</beans>

3 beans_teacher.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
  <bean id="teacher" class="study.spring.Teacher">
      <property name="name">
          <value>kuanzhan</value>
      </property>
  </bean>
</beans>

三測試程式

package study.spring;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;

public class SimpleInject{
  
   public static void main(String[] args){
    XmlBeanFactory beanFactory3 = new XmlBeanFactory(new FileSystemResource("./spring_xml/beans_teacher.xml"));
    XmlBeanFactory beanFactory1 = new XmlBeanFactory(new FileSystemResource("./spring_xml/beans.xml"),beanFactory3);
    XmlBeanFactory beanFactory2 = new XmlBeanFactory(new FileSystemResource("./spring_xml/beans_address.xml"));
    Student student1 = (Student)beanFactory1.getBean("student");
    student1.setName("zhuhong");
    Address address = (Address)beanFactory2.getBean("address");
    student1.setAddress(address);
    System.out.println(student1);
   }