第五節:注入參數
1,基本類型值;
<bean id="people1" class="com.java1234.entity.People">
<property name="id" value="1"></property>
<property name="name" value="張三"></property>
<property name="age" value="11"></property>
</bean>
2,注入 bean;
<bean id="dog1" class="com.java1234.entity.Dog">
<property name="name" value="Jack"></property>
</bean>
<bean id="people2" class="com.java1234.entity.People">
<property name="id" value="1"></property>
<property name="name" value="張三"></property>
<property name="age" value="11"></property>
<property name="dog" ref="dog1"></property>
</bean>
3,內部 bean;
<bean id="people3" class="com.java1234.entity.People">
<property name="id" value="1"></property>
<property name="name" value="張三"></property>
<property name="age" value="11"></property>
<property name="dog">
<bean class="com.java1234.entity.Dog">
<property name="name" value="Tom"></property>
</bean>
</property>
</bean>
4,null 值;
<bean id="people4" class="com.java1234.entity.People">
<property name="id" value="1"></property>
<property name="name" value="張三"></property>
<property name="age" value="11"></property>
<property name="dog">
<null></null>
</property>
</bean>
5,級聯屬性;
必須要在父bean類裏面進行實例化,這種級聯屬性不常用。
<bean id="people5" class="com.java1234.entity.People">
<property name="id" value="1"></property>
<property name="name" value="張三"></property>
<property name="age" value="11"></property>
<property name="dog.name" value="Jack2"></property>
</bean>
6,注入集合類型屬性;(list,set,map)以及一種Spring支持的Properties屬性
<bean id="people6" class="com.java1234.entity.People">
<property name="id" value="1"></property>
<property name="name" value="張三"></property>
<property name="age" value="11"></property>
<property name="dog" ref="dog1"></property>
<property name="hobbies">
<list>
<value>唱歌</value>
<value>跳舞</value>
</list>
</property>
<property name="loves">
<set>
<value>唱歌2</value>
<value>跳舞2</value>
</set>
</property>
<property name="works">
<map>
<entry>
<key><value>上午</value></key>
<value>寫代碼</value>
</entry>
<entry>
<key><value>下午</value></key>
<value>測試代碼</value>
</entry>
</map>
</property>
<property name="addresses">
<props>
<prop key="address1">aaaaa</prop>
<prop key="address2">bbbbb</prop>
</props>
</property>
</bean>
package com.java1234.entity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class People {
private int id;
private String name;
private int age;
private Dog dog;//如果用的是級聯屬性注入,則需要改成private Dog dog=new Dog();
private List<String> hobbies=new ArrayList<String>();
private Set<String> loves=new HashSet<String>();
private Map<String,String> works=new HashMap<String,String>();
private Properties addresses=new Properties();
public People() {
super();
// TODO Auto-generated constructor stub
}
public People(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Set<String> getLoves() {
return loves;
}
public void setLoves(Set<String> loves) {
this.loves = loves;
}
public List<String> getHobbies() {
return hobbies;
}
public void setHobbies(List<String> hobbies) {
this.hobbies = hobbies;
}
public Map<String, String> getWorks() {
return works;
}
public void setWorks(Map<String, String> works) {
this.works = works;
}
public Properties getAddresses() {
return addresses;
}
public void setAddresses(Properties addresses) {
this.addresses = addresses;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "People [id=" + id + ", name=" + name + ", age=" + age
+ ", dog=" + dog + ", hobbies=" + hobbies + ", loves=" + loves
+ ", works=" + works + ", addresses=" + addresses + "]";
}
}
第六節:Spring自動裝配通過配置 (前面都是手動注入)
通過配置default-autowire 屬性,Spring IOC 容器可以自動爲程序注入 bean;
默認是 no,不啓用自動裝配;
default-autowire 的類型有 byName,byType,constructor;
byName:通過名稱進行自動匹配;
byType:根據類型進行自動匹配;
constructor:和 byType 類似,只不過它是根據構造方法注入而言的,根據類型,自動注入;
建議:自動裝配機制慎用,它屏蔽了裝配細節,容易產生潛在的錯誤
第七節 方法注入
方法注入
Springbean 作用域默認是 單例 singleton; 可以通過配置 prototype ,實現多例;
方法注入 lookup-method
第八節 方法替換
實體類實現MethodRepplacer接口,父類獲取其他父類的屬性
第九節 bean之間的關係
1、繼承
<bean id="abstractPeople" class="com.java1234.entity.People" abstract="true">
<property name="className" value="高三5班"></property>
<property name="age" value="19"></property>
</bean>
<bean id="zhangsan" parent="abstractPeople" >
<property name="id" value="1"></property>
<property name="name" value="張三"></property>
</bean>
<bean id="lisi" parent="abstractPeople">
<property name="id" value="2"></property>
<property name="name" value="李四"></property>
<property name="age" value="20"></property>
</bean>
2、依賴
即當用戶請求某一個帶有depends-on屬性的bean時候,spring會先執行depends-on的bean
<bean id="zhangsan" parent="abstractPeople" depends-on="autority">
<property name="id" value="1"></property>
<property name="name" value="張三"></property>
</bean>
<bean id="lisi" parent="abstractPeople">
<property name="id" value="2"></property>
<property name="name" value="李四"></property>
<property name="age" value="20"></property>
<property name="dog" ref="dog"></property>
</bean>
<bean id="autority" class="com.java1234.service.Authority"></bean>
3、引用
<bean id="dog" class="com.java1234.entity.Dog">
<property name="name" value="jack"></property>
</bean>
<bean id="lisi" parent="abstractPeople">
<property name="id" value="2"></property>
<property name="name" value="李四"></property>
<property name="age" value="20"></property>
<property name="dog" ref="dog"></property>//引用
</bean>
第十節 bean作用範圍
1,singleton Spring ioc 容器中僅有一個 Bean 實例,Bean 以單例的方式存在,當用戶請求的時候只是把容器獨有的bean返回給用戶;
2,prototype 每次從容器中調用 Bean 時,都返回一個新的實例; 在bean中聲明scope範圍
3,request 每次 HTTP 請求都會創建一個新的 Bean;
4,session 同一個 HTTPSession 共享一個 Bean;
5,globalsession 同一個全局 Session 共享一個 Bean,一般用於 Portlet 應用環境;
6,application 同一個 Application 共享一個 Bean