1. 程式人生 > >spring設定構造,name,ref,map,set,list賦值

spring設定構造,name,ref,map,set,list賦值

、先建立一個例項類Person

public class Person {
	private int id;
	private String name;
	private int age;
	
	private Person friend;
	
	private List<String> list;
	
	private Set<String> set;
	
	private Map<String, String> map;
	
	public Person(){
		
	}
	
	public Person(int id,String name){
		this.id=id;
		this.name=name;
	}
	//實現get set 方法,這裡我就不顯示給大家了

例項spring xml中的bean

<bean class="spring.bean.Person" id="p1" name="a,b;/login">
		<constructor-arg >
			<value>1</value>
		</constructor-arg>
		<constructor-arg type="java.lang.String" value="mou"></constructor-arg>
		
		<property name="age" value="12" ></property>
		
		<property name="friend" >
		
			<!-- ref中bean與id相同 -->
			<ref bean="p1"/>
<!-- new一個新的,在這裡id、name不在起作用 --> <!-- <bean class="spring.bean.Person" ></bean> --> </property> <property name="list" > <list> <!-- 基本資料型別用value,物件用bean --> <value>mou</value> <value>yun</value> <value>fei</value> </list>
</property> <property name="set" > <set> <!-- 基本資料型別用value,物件用bean --> <value>mou</value> <value>yun</value> <value>fei</value> </set> </property> <property name="map" > <map key-type="java.lang.String"> <entry> <key><value>1</value></key> <value>mou</value> </entry> <entry > <key><value>2</value></key> <value>yun</value> </entry> <entry> <key><value>3</value></key> <value>fei</value> </entry> </map> <!-- 或者 <props > <prop key="1"> mou </prop> <prop key="2"> yun </prop> <prop key="3"> fei </prop> </props> --> </property> </bean>


1、<<ref bean="p1"/>

        ref必須是本xml中已經存在的bean,並且必須使用的是id

      <bean class="spring.bean.Person" ></bean>
       是new一個新的,在這裡id、name不在起作用

2、name="a,b;/login"

      則是在使用時

ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
Person p =  (Person) app.getBean("/login");

getBean("a")可以,getBean("b")可以,getBean("/login");也可以

3、構造方法在spring的xml中賦值

    在spring的xml中賦值有參構造有兩種方法,一個是標籤 ,一個是屬性,下面這個就是對public Person(int id,String name)構造的賦值,有的人說如果還有 public Person(String name)構造呢?那就再重新寫一個bean,寫一個<constructor-arg >就可以了

<constructor-arg >
  	<value>1</value>
</constructor-arg><constructor-arg type="java.lang.String" value="mou"></constructor-arg>


4、實體類中private List<String> list;,在spring的xml中賦值,set的賦值基本上與list一致,map的賦值則可以使用<map>或者<props>

<property name="list" >
	<list>
		<!-- 基本資料型別用value,物件用bean -->
		<value>mou</value>
		<value>yun</value>
		<value>fei</value>
	</list>
</property>


三、測試

public void test(){
		//多個xml用,號分隔做引數
		ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
		Person p =  (Person) app.getBean("/login");
		System.out.println(p.getId());
		System.out.println(p.getName());
		System.out.println(p.getAge());
		//物件
		System.out.println("---------------物件--------");
		System.out.println(p.getFriend().getName());
		//list
		System.out.println("---------------list--------");
		List<String> list =p.getList();
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		//set
		System.out.println("---------------set--------");
		Set<String> set =p.getSet();
		for(String s : set){
			System.out.println(s);
		}
		
		//map
		System.out.println("---------------map--------");
		Map<String, String> map = p.getMap();
		for(Entry<String, String> entry: map.entrySet()){
			System.out.println(entry.getKey()+"--------"+entry.getValue());
		}
	}
}