网站和管理系统的区别,互联网营销师怎么做,著名的办公室设计案例,电子商务网站开发与应用论文#x1f600;前言 本章是spring基于XML 配置bean系类中第4篇讲解spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象 #x1f3e0;个人主页#xff1a;尘觉主页
#x1f9d1;个人简介#xff1a;大家好#xff0c;我是尘觉#xff0c;希望… 前言 本章是spring基于XML 配置bean系类中第4篇讲解spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象 个人主页尘觉主页
个人简介大家好我是尘觉希望我的文章可以帮助到大家您的满意是我的动力 在csdn获奖荣誉: csdn城市之星2名 Java全栈群星计划top前5 端午大礼包获得者 欢迎大家这里是CSDN我总结知识的地方欢迎来到我的博客感谢大家的观看 如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦 文章目录 spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象通过静态工厂获取对象应用实例创建MyStaticFactory类修改 beans.xml 通过实例工厂获取对象应用实例创建MyInstanceFactory 类修改 beans.xml 通过 FactoryBean 获取对象应用实例创建 MyFactoryBean配置beans.xml 总结 spring中怎么通过静态工厂和动态工厂获取对象以及怎么通过 FactoryBean 获取对象
通过静态工厂获取对象
在 spring 的 ioc 容器, 可以通过静态工厂获对象 重新在获取一个bean因为他们所指定的工厂是静态的只会执行一次 所以他们是同一个对象 //通过静态工厂获取bean//Java基础-静态和非静态Testpublic void getBeanByStaticFactory() {ApplicationContext ioc new ClassPathXmlApplicationContext(beans.xml);Monster my_monster01 ioc.getBean(my_monster01, Monster.class);Monster my_monster04 ioc.getBean(my_monster04, Monster.class);System.out.println(my_monster01 my_monster01);System.out.println(my_monster01 my_monster04);//true}应用实例
创建MyStaticFactory类
public class MyStaticFactory {private static MapString, Monster monsterMap;//使用 static代码块 进行初始化//在java基础的时候讲过的static {monsterMap new HashMap();monsterMap.put(monster01, new Monster(100,牛魔王,芭蕉扇));monsterMap.put(monster02, new Monster(200,狐狸精,美人计));}//提供一个方法,返回Monster对象public static Monster getMonster(String key) {return monsterMap.get(key);}}修改 beans.xml
!--配置monster对象,通过静态工厂获取1. 通过静态工厂获取/配置bean2. class 是静态工厂类的全路径3. factory-method 表示是指定静态工厂类的哪个方法返回对象4. constructor-arg valuemonster02 value是指定要返回静态工厂的哪个对象--bean idmy_monster01classcom.spring.factory.MyStaticFactoryfactory-methodgetMonsterconstructor-arg valuemonster02//beanbean idmy_monster04classcom.spring.factory.MyStaticFactoryfactory-methodgetMonsterconstructor-arg valuemonster02//bean通过实例工厂获取对象
在 spring 的 ioc 容器, 可以通过实例工厂获对象 重新在获取一个bean因为他们所指定的工厂是非静态的调用一次执行一次所以他们不是同一个对象 //通过实例工厂获取beanTestpublic void getBeanByInstanceFactory() {ApplicationContext ioc new ClassPathXmlApplicationContext(beans.xml);Monster my_monster02 ioc.getBean(my_monster02, Monster.class);Monster my_monster03 ioc.getBean(my_monster03, Monster.class);System.out.println(my_monster02 my_monster02);System.out.println(my_monster03 my_monster03);System.out.println(my_monster02 my_monster03);//false}应用实例
创建MyInstanceFactory 类
public class MyInstanceFactory {private MapString, Monster monster_map;//通过普通代码块进行初始化{monster_map new HashMap();monster_map.put(monster03, new Monster(300, 牛魔王~, 芭蕉扇~));monster_map.put(monster04, new Monster(400, 狐狸精~, 美人计~));}//写一个方法返回Monster对象public Monster getMonster(String key) {return monster_map.get(key);}
}修改 beans.xml factory-bean 指定使用哪个实例工厂对象返回bean factory-method 指定使用实例工厂对象的哪个方法返回bean constructor-arg value“monster03” 指定获取到实例工厂中的哪个monster !--配置2个实例工厂对象--bean classcom.spring.factory.MyInstanceFactory idmyInstanceFactory/bean classcom.spring.factory.MyInstanceFactory idmyInstanceFactory2/!--配置monster对象, 通过实例工厂解读1. factory-bean 指定使用哪个实例工厂对象返回bean2. factory-method 指定使用实例工厂对象的哪个方法返回bean3. constructor-arg valuemonster03 指定获取到实例工厂中的哪个monster--bean idmy_monster02 factory-beanmyInstanceFactory factory-methodgetMonsterconstructor-arg valuemonster03//beanbean idmy_monster03 factory-beanmyInstanceFactory2 factory-methodgetMonsterconstructor-arg valuemonster03//bean通过 FactoryBean 获取对象
在 spring 的 ioc 容器, 可以通过 FactoryBean 获取对象 //通过FactoryBean获取beanTestpublic void getBeanByFactoryBean() {ApplicationContext ioc new ClassPathXmlApplicationContext(beans.xml);Monster my_monster05 ioc.getBean(my_monster05, Monster.class);System.out.println(my_monster05 my_monster05);}应用实例
创建 MyFactoryBean
public class MyFactoryBean implements FactoryBeanMonster {//这个就是你配置时候指定要获取的对象对应keyprivate String key;private MapString, Monster monster_map;{ //代码块完成初始化monster_map new HashMap();monster_map.put(monster03, new Monster(300, 牛魔王~, 芭蕉扇~));monster_map.put(monster04, new Monster(400, 狐狸精~, 美人计~));}public void setKey(String key) {this.key key;}Overridepublic Monster getObject() throws Exception {return monster_map.get(key);}Overridepublic Class? getObjectType() {//得到类型return Monster.class;}Overridepublic boolean isSingleton() {//这里指定是否返是单例return false;}
}配置beans.xml !--配置monster对象通过FactoryBean获取解读1. class 指定使用的FactoryBean2. key表示就是 MyFactoryBean 属性key3. value就是你要获取的对象对应key--bean idmy_monster05 classcom.spring.factory.MyFactoryBeanproperty namekey valuemonster04//bean总结
本篇消详细的讲解了spring中怎么通过静态工厂和动态工厂获取对象以及他们的区别 以及怎么通过 FactoryBean 获取对象
spring基于XML 配置bean系类 第一篇–怎么通过类型来获取 bean以及为什么可以通过构造器配置 bean
第二篇– 怎么通过通过 p 名称空间配置 bean以及怎么去引用/注入其它 bean 对象–ref和怎么去引用/注入内部 bean 对象
第三篇– spring怎么去引用/注入集合/数组类型和 怎么通过 util 名称空间创建 list以及 怎么去通过级联属性赋值
热门专栏推荐 想学习vue的可以看看这个 java基础合集 数据库合集 redis合集 nginx合集 linux合集 等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
欢迎大家加入我的社区 尘觉社区 文章到这里就结束了如果有什么疑问的地方请指出诸佬们一起来评论区一起讨论 希望能和诸佬们一起努力今后我们一起观看感谢您的阅读 如果帮助到您不妨3连支持一下创造不易您们的支持是我的动力