bean例項化的三種方法
這篇文章總結了bean例項化方法
Spring中bean例項方法有三種
- 使用構造方法例項化bean
- 使用靜態工廠例項化bean
- 使用例項工廠例項化bean
下面分別介紹這三種例項化bean方法具體操作。
在介紹在三種建立bean方法前,我們先建立一個User類,我們通過建立User物件來了解這三種例項化bean方式。
package lzgsea.bean;
public class User {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
使用構造方法例項化bean
在Java中我沒說使用構造方法建立bean,比較簡單,直接使用new關鍵字就可以建立了,例如我們要建立User物件,程式碼如下
User user = new User();
System.out.println(user);
在Spring中我們如何實現上面的java程式碼?
我們需要在XML中配置User的bean,程式碼如下:
<bean id="user" class="lzgsea.bean.User"></bean>
在Java程式碼使用ApplicationContext獲取user物件,程式碼如下:
ApplicationContext act = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) act.getBean("user");
System.out.println(user);
注意:這裡使用的是無參構造方法建立bean,如果我們要使用有參的構造方法建立bean,首先我們要在User類中定義有參的構造方法,在XML使用constructor-arg配置bean的引數。
使用靜態工廠方法建立bean
同樣,我們先看看在java中是怎麼通過靜態工廠方法建立User物件。
package lzgsea.factory;
import lzgsea.bean.User;
public class BeanFactoryTest {
public static void main(String[] args) {
User user = BeanFactoryTest.createUser();
System.out.println(user);
}
public static User createUser() {
return new User();
}
}
上面程式碼,我們可以看到BeanFactoryTest工廠類中有一個靜態工廠方法createUser,該方法用來生產User物件,上述程式碼我們用Spring如何來實現?
這裡我們需要使用bean標籤的factory-method屬性,該屬性表示bean的工程方法。
xml配置如下:
<bean id="user1" class="lzgsea.factory.BeanFactoryTest" factory-method="createUser"></bean>
使用靜態工廠方法建立bean,xml配置中class屬性指向的是工廠類的全路徑,factory-method屬性配置靜態工廠方法。
在java中我們使用ApplicationContext獲取user物件,程式碼如下:
ApplicationContext act = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) act.getBean("user1");
System.out.println(user);
使用例項工廠例項化bean
使用例項工廠例項化bean和使用靜態工廠方法例項化bean有些類似,都是通過工廠類建立bean,不同在於使用例項工廠例項化bean,我們需要先例項化工廠類,通過工廠類物件呼叫方法建立我們需要的bean。他的java程式碼實現如下:
package lzgsea.factory;
import lzgsea.bean.User;
public class BeanFactory {
public static void main(String[] args) {
BeanFactory bf = new BeanFactory();
User user = bf.createUser();
System.out.println(user);
}
public User createUser() {
return new User();
}
}
上述這段程式碼在Spring中如何實現?
我們現在XML中配置BeanFactory,再通過factory-bean和factory-method屬性配置User,factory-bean表示工廠類的bean。
<!-- 工廠類bean -->
<bean id="beanFactory" class="lzgsea.factory.BeanFactory"></bean>
<!-- 我們需要生產的bean -->
<bean id="user2" factory-bean="beanFactory" factory-method="createUser"></bean>
在java中我們使用ApplicationContext獲取user物件,程式碼如下:
ApplicationContext act = new ClassPathXmlApplicationContext("beans.xml");
User user = (User) act.getBean("user2");
System.out.println(user);
相關文章
- Java開發學習(四)----bean的三種例項化方式JavaBean
- Spring Ioc原始碼分析系列--容器例項化Bean的四種方法Spring原始碼Bean
- 4、Spring IOC容器 Bean物件例項化的3種方式SpringBean物件
- 解密Spring中的Bean例項化:推斷構造方法(上)解密SpringBean構造方法
- 結構體三種例項化方法(含成員函式)結構體函式
- php例項化物件的例項方法PHP物件
- Spring中Bean的例項化詳細流程SpringBean
- Spring Bean 的例項化過程原始碼解析SpringBean原始碼
- Spring 原始碼學習 - 單例bean的例項化過程Spring原始碼單例Bean
- 一次性講清楚spring中bean的生命週期之三:bean是如何例項化的SpringBean
- Spring 原始碼分析之 bean 例項化原理Spring原始碼Bean
- C#例項化物件的三種方式及效能對比C#物件
- 死磕Spring之IoC篇 - Bean 的例項化階段SpringBean
- Spring原始碼分析(二)bean的例項化和IOC依賴注入Spring原始碼Bean依賴注入
- Spring Ioc原始碼分析系列--Bean例項化過程(二)Spring原始碼Bean
- Spring Ioc原始碼分析系列--Bean例項化過程(一)Spring原始碼Bean
- 無法訪問的成員例項化一個方法在角的另一種方法
- Java的幾種建立例項方法的效能對比Java
- 【spring 原始碼】IOC 之bean例項的建立Spring原始碼Bean
- Spring中用註解建立bean例項SpringBean
- 獲取Spring容器中Bean例項的工具類(Java泛型方法實現)SpringBeanJava泛型
- python呼叫方法必須例項化麼Python
- Spring系列(一):Spring MVC bean 解析、註冊、例項化流程原始碼剖析SpringMVCBean原始碼
- Spring Boot中從自定義Logback訪問Spring Bean三種方法Spring BootBean
- 例項化list
- SAP UI5 應用中 MockServer 的例項化方法UIMockServer
- Spring原始碼解析之八finishBeanFactoryInitialization方法即初始化單例beanSpring原始碼Bean單例
- Spring原始碼淺析之bean例項的建立過程(二)Spring原始碼Bean
- Spring原始碼淺析之bean例項的建立過程(一)Spring原始碼Bean
- Android生成ViewModel例項的幾種方式AndroidView
- JS 建立例項物件的四種模式JS物件模式
- Dart - 抽象類的例項化Dart抽象
- 如何區分例項化網格中的每個例項
- python例項方法中self的作用Python
- vue例項的屬性和方法Vue
- Java--例項化Java
- 開始例項化
- Laravel kernel例項化Laravel