日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring FactoryBean的知识应用和Beanfactory的区别

發布時間:2024/4/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring FactoryBean的知识应用和Beanfactory的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BeanFactory:是Spring的一個工廠它能夠得到Spring工廠給創建的Bean,能通過getBean()方法獲得。

FactoryBean:是一個特殊的Bean,Spring管理它的時候會對實現這個接口的類前面加一個(&)字符。而它的名字則是表示getObject中得到的Bean。主要的作用是別的Bean屬性或者依賴太多的情況下,都可以通過FactoryBean生成不太容易的Bean,然后對外提供簡單化的Bean

public class TempDaoFactoryBean {public void test(){System.out.println("bean");} } /*** 如果你的類實現了FactoryBean* 那么Spring容器中會存在兩個對象* 一個是getObject返回的對象* 一個是當前對象** getObject得到的名字是當前類指定的名字,也就是Spring中daoFactoryBean對應的對象** 當前對象是當前類的名字是“&”+當前類的名字** */ @Component("daoFactoryBean") public class DaoFactoryBean implements FactoryBean {public void testBean(){System.out.println("testBean");}public Object getObject() throws Exception {return new TempDaoFactoryBean();}public Class<?> getObjectType() {return null;}public boolean isSingleton() {return false;} }

依賴關系比較復雜的時候可以使用FactoryBean,例如SqlSessionFactoryBean,就是使用的Factory這種模式,對外進行簡化它的龐大資源配置的。

簡單一個例子來模擬龐大的復雜關系

package com.FactoryBeanPackage;import org.springframework.beans.factory.FactoryBean;public class DaoFactoryBean implements FactoryBean {private String msg;public void setMsg(String msg) {this.msg = msg;}public void testBean(){System.out.println("testBean");}public Object getObject() throws Exception {TempDaoFactoryBean temp=new TempDaoFactoryBean();String msgArrags[]=msg.split(",");temp.setMsg(msgArrags[0]);temp.setMsg2(msgArrags[1]);temp.setMsg3(msgArrags[2]);return temp;}public Class<?> getObjectType() {return null;}public boolean isSingleton() {return false;} } package com.FactoryBeanPackage;public class TempDaoFactoryBean {private String msg;private String msg2;private String msg3;public void setMsg(String msg) {this.msg = msg;}public void setMsg2(String msg2) {this.msg2 = msg2;}public void setMsg3(String msg3) {this.msg3 = msg3;}public String getMsg() {return msg;}public String getMsg2() {return msg2;}public String getMsg3() {return msg3;}public void test(){System.out.println("bean");} } package com.FactoryBeanPackage;import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class Test {public static void main(String[] args) {AnnotationConfigApplicationContext act=new AnnotationConfigApplicationContext(SpringDaoFactoryConfig.class);TempDaoFactoryBean daoFactoryBean= (TempDaoFactoryBean) act.getBean("daoFactor");System.out.println(daoFactoryBean.getMsg());} } package com.FactoryBeanPackage;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource;@Configuration @ComponentScan(value = "com.FactoryBeanPackage") @ImportResource("classpath:spring.xml") public class SpringDaoFactoryConfig { }

?

?

?

?

?

總結

以上是生活随笔為你收集整理的spring FactoryBean的知识应用和Beanfactory的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。