1.Spring學習筆記之 ———— Bean的例項化
什麼是Bean的例項化?
在面向物件的程式中,想要使用某個物件,就需要先例項化這個物件。Spring中,想要使用容器中的Bean,也需要例項化Bean。
其類似於當我們需要建立一個類物件而去new這個類一樣。通常來說,當我們需要用到一個Bean的時候,只有將其例項化之後,我們才可以去呼叫它。在Spring中,Spring會自動幫我們例項化好Bean,只需要我們告訴Spring我們需要用到哪個Bean,並在Spring的配置檔案配置相關程式碼,這樣,Spring就可以自動幫我們例項化好Bean,然後我們直接用getBean方法就可以獲得Bean的例項化。
Spring中,有三種例項化方式:分別為構造器例項化(最常用)
接下來,我將詳細講解這三種例項化的區別以及使用。
一、構造器例項化
概述:構造器例項化是指Spring容器通過Bean對應的類中預設的建構函式(無參建構函式)來例項化Bean
具體示例:
首先,我們先隨意建立一個Bean類
Bean.java:
package com.zzc.contructor;
public class Bean1 {
//什麼都不用做
}
接著,在Spring配置檔案中配置
beans1.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-4.3.xsd"> <!--構造器例項化:id為自定義Bean的名字,class是Bean1類包的位置--> <bean id="bean1" class="com.zzc.contructor.Bean1"> <beans>
測試,寫一個main函式,做測試
Test1.java:
package com.zzc.contructor; public class Test1 { public static void main(String[] args) {] //定義配置檔案路徑 String xmlPath = "com/zzc/contructor/beans1/xml"; //Application Context 在載入配置檔案時,對Bean進行例項化 ApplicationContext appliContext = new ClassPathXmlApplicationContext(xmlPath); //getBean方法裡放的是在xml檔案裡的id名 Bean1 bean = (Bean1) appliContext.getBean("bean1"); System.out.println(bean); } }
執行結果:
二、靜態工廠方式例項化
概述:靜態工廠方式要求建立一個靜態工廠的方法來建立Bean的例項
具體示例:
首先,還是一樣,先建立一個Bean類:
Bean2.java:
package com.zzc.staticFactory
public class Bean2 {
//什麼都不用寫
}
接著,建立一個Bean工廠類,並在其裡面定義一個靜態的返回Bean物件的方法:
Bean2Factory.java:
package com.zzc.staticFactory
public class Bean2Factory {
//注意這裡的這個方法是static的
public static Bean2 createBean() {
return new Bean2();
}
}
然後在xml檔案裡面配置:
beans2.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-4.3.xsd">
<!--這裡的class裡面的地址是Bean工廠的地址,而不是Bean的地址-->
<!--factory-method方法中放的就是工廠中的靜態方法的方法名-->
<bean id="bean2" class="com.zzc.staticFactory.Bean2Factory" factory-method="createBean"/>
<beans>
搞定,測試,測試:
Test2.java:
package com.zzc.staticFactory;
public class Test2 {
public static void main(String[] args) {
String xmlPath = "com/zzc/staticFactory/beans2.xml"
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
System.out.println(applicationContext.getBean("bean2"));
}
}
執行結果:
三、例項工廠方式例項化:
概述:例項工廠採用直接建立Bean例項的方式,在配置檔案中,通過factory-bean屬性配置一個例項工廠,然後使用factory-method屬性確定使用工廠中的哪個方法。
具體示例:
首先,還是一樣,建立一個Bean類
Bean3.java:
package com.zzc.factory;
public class Bean3 {
//什麼都不用寫
}
接著,建立我們的Bean工廠類:
Bean3Factory.java:
package com.zzc.factory;
public class Bean3Factory {
public Bean3Factory() {
System.out.println("bean3工廠例項化中");
}
public Bean3 createBean() {
return new Bean3();
}
}
最後,在xml配置檔案中這樣配置:
beans3.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-4.3.xsd">
<!--配置工廠-->
<bean id="bean3Factory" class="com.zzc.factory.Bean3Factory "/>
<!--使用factory-bean屬性指向配置的例項工廠,使用factory-method屬性確定使用工廠中哪個方法-->
<bean id="bean3" factory-bean="bean3Factory" factory-method="createBean"/>
<beans>
測試,測試:
Test3.java:
package com.zzc.factory;
public class Test3 {
public static void main(String[] args) {
String xmlPath = "com/zzc/factory/beans3.xml";
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
System.out.println(applicationContext.getBean("bean3"));
}
}
執行結果:
bean3工廠例項化中
至此,Spring例項化Bean的三種方式就已經介紹完啦,希望對你們有幫助!