1. 程式人生 > >Bean例項化的三種方式

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

jar 包)

*

* 選中方法名,右鍵->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】