Bean例項化的三種方式
-------------------siwuxie095
Bean 例項化的三種方式
1、Bean 例項化,即 在 Spring 的核心配置檔案中建立物件
編寫一個普通類(即要例項化的類):
User.java:
package com.siwuxie095.instance; public class User { publicvoid add() { System.out.println("----- add -----"); } } |
2、Bean 例項化的三種方式
(1)第一種方式:使用無參的構造器例項化
id 是要例項化的物件,class 是要例項化的類
applicationContext.xml:
<?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" <!-- 使用無參的構造器進行例項化 --> <beanid="user"class="com.siwuxie095.instance.User"></bean> </beans> |
編寫一個測試類:
TestUser.java:
package com.siwuxie095.instance; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestUser { /** *
手動加上 @Test
以進行單元測試(將自動匯入 JUnit 4
* * 選中方法名,右鍵->Run As->JUint Test */ @Test publicvoid testUser(){ // (1) 載入 Spring 的核心配置檔案 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); // (2) 得到核心配置檔案中建立的物件(獲取 Bean 例項) User user=(User) context.getBean("user"); user.add(); } } |
使用第一種方式需要注意:
如果類中存在有參的構造器,一定要手動建立一個無參的構造器,
否則將出現異常(因為此時不存在預設的無參的構造器)
(2)第二種方式:使用靜態工廠方法例項化
編寫一個靜態工廠類:
UserFactory.java:
package com.siwuxie095.instance; // 靜態工廠類 public class UserFactory { // 靜態工廠方法 public static User getUser() { return new User(); } } |
id 是要例項化的物件,class 是靜態工廠類,factory-method 是靜態工廠方法
applicationContext.xml:
<?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" <!-- 使用靜態工廠方法進行例項化 --> <beanid="user"class="com.siwuxie095.instance.UserFactory" factory-method="getUser"></bean> </beans> |
編寫一個測試類(同上TestUser.java)
(3)第三種方式:使用例項工廠方法例項化
編寫一個例項工廠類:
UserFactory.java:
package com.siwuxie095.instance; // 例項工廠類 public class UserFactory { // 例項工廠方法 public User getUser() { return new User(); } } |
第一個Bean:id 是例項工廠類的物件,class 是例項工廠類,
第二個Bean:id 是要例項化的物件,factory-bean 是例項
工廠類的物件,factory-method 是例項工廠方法
applicationContext.xml:
<?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" <!-- 使用例項工廠方法進行例項化 --> <!-- 先建立例項工廠類的物件 --> <beanid="factory"class="com.siwuxie095.instance.UserFactory"></bean> <!-- 再通過例項工廠方法建立要例項化的物件 --> <beanid="user"factory-bean="factory"factory-method="getUser"></bean> </beans> |
編寫一個測試類(同上TestUser.java)
3、總結
(1)一般主要使用無參構造器的方式進行Bean 的例項化
(2)靜態工廠方法和例項工廠方法的主要區別就在於是否有static 關鍵字
【made by siwuxie095】