這篇文章主要介紹了Spring Bean實(shí)例化實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
成都創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)涼州,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
Bean的實(shí)例化
1.構(gòu)造器實(shí)例化:Spring容器通過Bean對(duì)應(yīng)類中默認(rèn)的無參構(gòu)造方法來實(shí)例化Bean
package com.itheima.instance.constructor; public class Bean1 { }
<?xml version="1.0" encoding="UTF-8"?>
在beans1.xml文件中,定義了一個(gè)id為bean1的Bean,并通過class屬性指定其對(duì)應(yīng)的實(shí)現(xiàn)類Bean1
package com.itheima.instance.constructor; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class InstanceTest1 { public static void main(String[] args) { //定義配置文件路徑 String xmlPath = "com/itheima/instance/constructor/beans1.xml"; //ApplicationContext在加載配置文件時(shí),對(duì)Bean進(jìn)行實(shí)例化 ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); Bean1 bean = (Bean1) applicationContext.getBean("bean1"); System.out.println(bean); } }
在InstanceTest1類中,首先定義了配置文件的路徑,然后Spring容器ApplicationContext會(huì)加載配置文件。在加載時(shí),Spring容器會(huì)通過id為bean1的實(shí)現(xiàn)類Bean1中默認(rèn)的無參構(gòu)造方法對(duì)Bean進(jìn)行實(shí)例化。
2. 靜態(tài)工廠方法實(shí)例化
package com.itheima.instance.static_factory; public class Bean2 { }
package com.itheima.instance.static_factory; public class MyBean2Factory { //使用自己的方法創(chuàng)建Bean2實(shí)例 public static Bean2 createBean(){ return new Bean2(); } }
<?xml version="1.0" encoding="UTF-8"?>
定義id為bean2的Bean,通過class屬性指定其對(duì)應(yīng)的工廠實(shí)現(xiàn)類(MyBean2Factory.java),需要增加factory-method屬性來告訴Spring容器其方法名稱為createBean。
package com.itheima.instance.static_factory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class InstanceTest2 { public static void main(String[] args) { //定義配置文件路徑 String xmlPath = "com/itheima/instance/static_factory/beans2.xml"; //ApplicationContext在加載配置文件時(shí),對(duì)Bean進(jìn)行實(shí)例化 ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); System.out.println(applicationContext.getBean("bean2")); } }
3.實(shí)例工廠方式實(shí)例化
package com.itheima.instance.factory; public class Bean3 { }
package com.itheima.instance.factory; public class MyBean3Factory { public MyBean3Factory(){ System.out.println("bean3工廠實(shí)例化中"); } //創(chuàng)建Bean3實(shí)例的方法 public Bean3 createBean(){ return new Bean3(); } }
<?xml version="1.0" encoding="UTF-8"?>
首先配置了一個(gè)工廠Bean,然后配置了需要實(shí)例化的Bean。在id為bean3的Bean中,使用factory-bean屬性指向配置的實(shí)例工廠,使用factory-method屬性來確定使用工廠中的createBean()方法
package com.itheima.instance.factory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class InstanceTest3 { public static void main(String[] args) { //指定配置文件路徑 String xmlPath = "com/itheima/instance/factory/beans3.xml"; //ApplicationContext加載配置文件時(shí),對(duì)Bean進(jìn)行實(shí)例化 @SuppressWarnings("resource") ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath); System.out.println(applicationContext.getBean("bean3")); } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。