spring設定構造,name,ref,map,set,list賦值
阿新 • • 發佈:2019-02-19
、先建立一個例項類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());
}
}
}