02_Spring Bean 屬性 即xml <beans>標籤詳解
阿新 • • 發佈:2020-12-20
技術標籤:Spring Frameworkspringbeans標籤詳解
Spring Bean
Spring IOC容器相當於一個工廠,容器中的 Bean 相當工廠的產品。工廠要生產和管理 Bean,需要讓工廠知道載入那些Bean,如何載入。
Spring 配置檔案支援兩種不同的格式,分別是 XML 檔案格式和 Properties 檔案格式。
一般Spring 以 XML 檔案格式作為 Spring 的配置檔案,通過 XML 配置檔案註冊並管理 Bean 之間的依賴關係。
Beans.xml 頭配置
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd" >
<bean></bean>
</beans>
bean標籤常用屬性
屬性 | 描述 |
---|---|
id | Bean 的唯一識別符號,Spring 容器對 Bean 的配置和管理都通過該屬性完成 |
name | Spring 容器同樣可以通過此屬性對容器中的 Bean 進行配置和管理,name 屬性中可以為 Bean 指定多個名稱,每個名稱之間用逗號或分號隔開 |
class | 指定了 Bean 的具體實現類 |
scope | Bean 例項的作用域, singleton(預設單例)、prototype(原型)、request、session 和 global Session |
屬性 | 描述 bean元素的子元素 |
---|---|
constructor-arg | 此元素傳入構造引數進行例項化, index 屬性指定構造引數的序號(從 0 開始),type 屬性指定構造引數的型別 |
property | 呼叫 Bean 例項中的 Set 方法完成屬性賦值,元素的 name 屬性指定 Bean 例項中的相應屬性名 |
屬性 | 描述 property constructor-arg等元素的子元索 |
---|---|
ref | property 和 constructor-arg 元素的子元索,ref元素中的 bean 屬性用於指定對 Bean 工廠中某個 Bean 例項的引用 |
value | property 和 constructor-arg 元素的子元索,用於直接指定一個常量值 |
屬性 | 描述 |
---|---|
list | 用於封裝 List 或陣列型別的依賴注入 |
set | 用於封裝 Set 型別屬性的依賴注入 |
map | 用於封裝 Map 型別屬性的依賴注入 |
entry | map元素的子元素,用於設定一個鍵值對。其 key 屬性指定字串型別的鍵值,ref 或 value 子元素指定其值 |
bean的例項化 bean標籤用例
1:載入user,通過預設無參的構造方法載入user
User類
public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
spring.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- bean就是java物件 由spring來建立和管理 -->
<bean id="user" class="cn.lingyiwin.bean.User"/>
</beans>
TestUser類
public class TestUser {
public static void main(String[] args) {
ApplicationContext act =new ClassPathXmlApplicationContext("config/spring.xml");
User user = (User)act.getBean("user");
System.out.println(user);
}
}
執行結果:說明User物件已經被Spring
cn.lingyiwin.bean.User@2b98378d
上面示例如果沒有看明白,我將預設的構造方法打一行帶嗎?
修改User類
public class User {
private String name;
public User() {
System.out.println("user物件被建立");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
執行結果:
user物件被建立
cn.lingyiwin.bean.User@2b98378d
2:通過property 為user的那麼屬性設定值。並列印輸出
必須有該屬性的set方法。
<bean id="user" class="cn.lingyiwin.bean.User">
<property name="name" value="設定name的值"/>
</bean>
執行結果:
user物件被建立
cn.lingyiwin.bean.User@56ac3a89
設定name的值
3:通過有參的建構函式載入user物件
user物件
public class User {
private String name;
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
修改xml
<bean id="user" class="cn.lingyiwin.bean.User">
<constructor-arg name="name" value="有參構造方法"/>
</bean>
執行結果:
cn.lingyiwin.bean.User@5cb9f472
有參構造方法
4:通過構造方法中還有很多屬性可以設定。可以參考官方文件。
index:通過下標設定
name:通過名稱設定
type:通過引數型別設定 String int等
<constructor-arg type="String">
<value>String</value>
</constructor-arg>
ref 是引用型別,value 是用來設定值。