Spring?IOC?xml方式進(jìn)行工廠Bean操作詳解
spring中有兩種Bean
第一種 普通 Bean 就是我們在配置文件中 定義的類對象 創(chuàng)建bean 并定義相關(guān)的id和聲明類對象
普通bean的特點(diǎn)在于 在配置文件中定義的類型 也就是返回類型
就比如 你定義的是一個(gè) book類的類型 那你這個(gè)bean返回的 也比如是個(gè)book類型的對象
第二種 是在工廠類中統(tǒng)一管理的工廠Bean
特點(diǎn)上 還是有比較大區(qū)別的 首先 工廠Bean 又叫FactoryBean 他定義的類型和返回類型是可以不一樣的
通常作為一個(gè)工廠類 來管理bean對象操作
我們創(chuàng)建一個(gè)java項(xiàng)目 引入spring中的基本依賴
然后在src下創(chuàng)建兩個(gè)包 我這里直接叫 spring5 和 collectiontype 你們可以根據(jù)自己的喜好起名 跟我的一樣 可以避免一些名字問題 畢竟你們的代碼大部分可以直接從我這復(fù)制
然后 我們在 collectiontype包下創(chuàng)建一個(gè) Course 類 參考代碼如下
package collectiontype; //課程類 public class Course { //課程名稱 private String cname; public void setCname(String cname) { this.cname = cname; } public String toString() { return "cname = "+cname; } }
這是一個(gè)管理課程的類 定義 字符串的cname 代表課程名稱 然后 定義了他的set方法
改寫了類的toString方法 這樣直接輸出對象 就會(huì)輸出cname的值
在 spring5目錄下創(chuàng)建一個(gè)java類 我這里取名為MyBean
package spring5; import collectiontype.Course; import org.springframework.beans.factory.FactoryBean; public class MyBean implements FactoryBean<Course> { @Override public Course getObject() throws Exception { Course course = new Course(); course.setCname("測試工具"); return course; } @Override public Class<?> getObjectType() { return null; } }
這里 我們實(shí)現(xiàn)了 FactoryBean接口 這樣就表示他是一個(gè)工廠類
然后 定義泛型 指定Course對象類型 這個(gè)就代表 我們返回的是一個(gè) Course類的對象
getObject返回的值 就是最后 bean對象返回的值
然后我們在src下創(chuàng)建 bean.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.xsd"> <bean id="mybean" class="spring5.MyBean"></bean> </beans>
這里 我們就創(chuàng)建了一個(gè)bean MyBean對象
然后 在src下創(chuàng)建一個(gè)text測試類 參考代碼如下
import collectiontype.Course; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class text { public static void main(String args[]) { //獲取配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); Course course = context.getBean("mybean", Course.class); System.out.println(course); } }
可以看到 我們創(chuàng)建的是mybean的對象反射對象 但我們接收的類型是Course類的 因?yàn)槲覀僊yBean實(shí)際返回的是一個(gè)Course類的對象
然后通過System.out.println輸出了對象的toString方法
運(yùn)行結(jié)果如下
到此這篇關(guān)于Spring IOC xml方式進(jìn)行工廠Bean操作詳解的文章就介紹到這了,更多相關(guān)Spring 工廠Bean操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解SpringBoot如何實(shí)現(xiàn)整合微信登錄
本文主要介紹了SpringBoot實(shí)現(xiàn)整合微信登錄的過程詳解,文中的示例代碼介紹的非常詳細(xì),對我們的學(xué)習(xí)過工作有一定的參考價(jià)值,需要的朋友可以關(guān)注下2021-12-12聊聊注解@Aspect的AOP實(shí)現(xiàn)操作
這篇文章主要介紹了聊聊注解@Aspect的AOP實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01Mybatis/Mybatis-Plus駝峰式命名映射的實(shí)現(xiàn)
本文主要介紹了Mybatis-Plus駝峰式命名映射的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Java黑科技之通過Google Java Style 文件配置IDEA和Ecplise代碼風(fēng)格
在日常開發(fā)中,多人團(tuán)隊(duì)協(xié)作開發(fā)一個(gè)項(xiàng)目是很常見的,特別是大公司,這就會(huì)涉及到多人在一個(gè)工程上開發(fā)代碼.無規(guī)矩不成方圓,一個(gè)好的代碼風(fēng)格,更加有利于團(tuán)隊(duì)協(xié)作,減少代碼沖突,提高代碼可閱讀性,美觀性.本文就帶著大家仔細(xì)研究這個(gè)黑科技 ,需要的朋友可以參考下2021-05-05SpringBoot2.1.4中的錯(cuò)誤處理機(jī)制
這篇文章主要介紹了SpringBoot2.1.4中的錯(cuò)誤處理機(jī)制,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10Mybatis中mapper.xml實(shí)現(xiàn)熱加載介紹
大家好,本篇文章主要講的是Mybatis中mapper.xml實(shí)現(xiàn)熱加載介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01