Spring基于xml文件配置Bean過(guò)程詳解
這篇文章主要介紹了spring基于xml文件配置Bean過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
通過(guò)全類(lèi)名來(lái)配置:
class:bean的全類(lèi)名,通過(guò)反射的方式在IOC容器中創(chuàng)建Bean,所以要求bean中必須有一個(gè)無(wú)參的構(gòu)造器。
<bean id="helloWorld" class="com.gong.spring.beans.HelloWorld"> <property name="name" value="jack"></property> </bean>
在springIOC容器讀取Bean配置創(chuàng)建Bean的實(shí)例之前,需要對(duì)容器進(jìn)行實(shí)例化。spring提供了兩種類(lèi)型的IOC容器實(shí)現(xiàn):
Beanfactory:IOC容器的基本實(shí)現(xiàn)。
ApplicationContext:提供了更多高級(jí)特性,是BeanFactory的子接口。
ApplicationContext主要實(shí)現(xiàn)類(lèi):
- ClassPathXmlApplicationContext:從類(lèi)路徑加載配置文件。
- FileSystemXmlApplicationContext:從文件系統(tǒng)中加載配置文件。
- ConfigureableApplicationContext擴(kuò)展于ApplicationContext,新增兩個(gè)方法refresh()和close(),讓ApplicationContext具有啟動(dòng)、刷新和關(guān)閉上下文的能力。
ApplicaiotnContex在初始化時(shí)就上下文時(shí)就實(shí)例化所有單例的Bean。
WebApplicationContext是專(zhuān)門(mén)用于WEB應(yīng)用的,它允許從相對(duì)于WEB根目錄的路徑中完成初始化工作。
依賴注入的三種方式
(1)屬性注入:通過(guò)setter方法:<property name="name" value="jack"></property>,即在bean中存在setter方法。
(2)構(gòu)造器注入:<constructor-arg value="" index="0" type=""></constructor-arg>,根據(jù)構(gòu)造方法中初始化的參數(shù)進(jìn)行一一設(shè)置,同時(shí),可以根據(jù)參數(shù)的順序index,參數(shù)的類(lèi)型type來(lái)區(qū)分重載的構(gòu)造器。
(3)工廠方法注入(很少使用,不推薦)
<bean id="student" class="com.gong.spring.beans.Student"> //第一種方式注入屬性值 <constructor-arg value="tom" index="0" type="java.lang.String"></constructor-arg> <constructor-arg value="12" index="1" type="int"></constructor-arg> //第二種方式注入屬性值 <constructor-arg index="2" type="double"> <value>99.00</value> </constructor-arg> </bean>
package com.gong.spring.beans; public class Student { private String name; private int age; private double score; public Student(String name,int age,double score) { this.name = name; this.age = age; this.score = score; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", score=" + score + "]"; } }
public static void main(String[] args) { //1.創(chuàng)建spring的IOC容器對(duì)象 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //2.從容器中獲取Bean實(shí)例 Student student = (Student) ctx.getBean("student"); System.out.println(student.toString()); }
輸出:
當(dāng)屬性值有特殊符號(hào)時(shí),要用以下方式:
<constructor-arg index="0" type="java.lang.String"> <value><![CDATA[<tom>]]></value> </constructor-arg>
用<![CDATA[屬性值]]>。
相關(guān)文章
在Mac下IDEA安裝并使用protobuf方式(Java)
這篇文章主要介紹了在Mac下IDEA安裝并使用protobuf方式(Java),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Spring事件監(jiān)聽(tīng)器之@EventListener原理分析
這篇文章主要介紹了Spring事件監(jiān)聽(tīng)器之@EventListener原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12springboot+thymeleaf國(guó)際化之LocaleResolver接口的示例
本篇文章主要介紹了springboot+thymeleaf國(guó)際化之LocaleResolver的示例 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11SpringCloud可視化鏈路追蹤系統(tǒng)Zipkin部署過(guò)程
這篇文章主要介紹了SpringCloud可視化鏈路追蹤系統(tǒng)Zipkin部署過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03SpringBoot淺析安全管理之基于數(shù)據(jù)庫(kù)認(rèn)證
在真實(shí)的項(xiàng)目中,用戶的基本信息以及角色等都存儲(chǔ)在數(shù)據(jù)庫(kù)中,因此需要從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)進(jìn)行認(rèn)證和授權(quán)2022-08-08mybatis中 if-test 數(shù)字判斷的坑及解決
這篇文章主要介紹了mybatis中 if-test 數(shù)字判斷的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06Java實(shí)現(xiàn)發(fā)送郵件功能時(shí)碰到的坑
之前用163郵箱發(fā)郵件時(shí)明明是成功的,但是使用中國(guó)移動(dòng)自己的郵箱時(shí),無(wú)論如何在linux服務(wù)器中都發(fā)送不成功。下面小編給大家說(shuō)下我是怎么解決的,一起看下吧2016-06-06Java持久層框架MyBatis簡(jiǎn)單實(shí)例
MyBatis 本是apache的一個(gè)開(kāi)源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis 。本文重點(diǎn)給大家介紹Java持久層框架MyBatis簡(jiǎn)單實(shí)例,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-07-07創(chuàng)建并運(yùn)行一個(gè)java線程方法介紹
這篇文章主要介紹了創(chuàng)建并運(yùn)行一個(gè)java線程,涉及線程代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11