用spring管理和实例化对象的四种方式

方式一:无参构造函数(最常用) 对象是spring创建,创建的对象还要交给spring容器管理

bean:豆子
id:在spring容器中Hello对象的名,在容器中id的值必须唯一
class:要对哪个类实例化对象,遵守 包名.类名
底层:Object obj=Class.forName(“包名.类名”).newInstance();(反射原理)
如何断定包名.类名是正确,按住ctrl键用鼠标放在class属性的值上

<bean id="hello" class="com.tarena.ioc.Hello"></bean>

方式二:静态工厂方式,对象是别的渠道创建的,交给给spring管理 spring_factory.xml

对象不是spring创建的是由Calendar.getInstance()方法创建的
其他渠道创建完毕的对象交给spring管理

<bean id="cal" class="java.util.Calendar" factory-method="getInstance"></bean>测试代码:
@Test
public void testFactory1(){//启动spring容器ApplicationContext context=new ClassPathXmlApplicationContext("resources/spring_factory.xml");Calendar cal=context.getBean("cal",Calendar.class);System.out.println(cal.getTime());
}

方式三:实例工厂,在别的渠道new完的对象,交给spring管理

if是InstanceFactory类类型的对象,是spring容器创建的
hello是Hello类类型的对象,在getHello方法中创建交给spring管理
hello对象的产生,必须通过factory-bean=“if” 调用getHello

<bean id="if"
class="com.tarena.factory.InstanceFactory"></bean>
<bean id="hello" factory-bean="if" factory-method="getHello"></bean>
测试代码:@Testpublic void testFactory2(){//启动spring容器ApplicationContext context=new ClassPathXmlApplicationContext("resources/spring_factory.xml");Hello hello=context.getBean("hello",Hello.class); hello.sayHi();
}

方式四:spring工厂方式,在别的渠道实例化对象,把对象交给spring容器管理

用getbean获取id为hello1的对象,spring会自动调用
SpringFactory里的getObject方法

<bean id="hello1" class="com.tarena.factory.SpringFactory"></bean>
测试代码:@Testpublic void testFactory3(){//启动spring容器ApplicationContext context=new ClassPathXmlApplicationContext("resources/spring_factory.xml");Hello hello=context.getBean("hello1",Hello.class);    hello.sayHi();
}

以上就是spring管理和实例化对象的四种方法。

用spring管理和实例化对象的四种方式相关推荐

  1. java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式

    java相关:详解Spring加载Properties配置文件的四种方式 发布于 2020-4-29| 复制链接 摘记: 一.通过 context:property-placeholder 标签实现配 ...

  2. spring加载ApplicationContext.xml的四种方式

    spring加载ApplicationContext.xml的四种方式 spring 中加载xml配置文件的方式,好像有4种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都 ...

  3. 详解C#实例化对象的三种方式及性能对比

    前言 做项目过程中有个需求要实例化两万个对象并添加到List 中,这个过程大概需要1min才能加载完(传参较多),于是开启了代码优化之旅,再此记录. 首先想到的是可能实例化比较耗时,于是开始对每种实例 ...

  4. Spring IOC (DI) 依赖注入的四种方式

    依赖注入的四种方式: set 注入 赋值,默认使用的是set() 方法,依赖注入底层是通过反射实现的 <bean id="student" class="cust. ...

  5. Java遍历Map对象的四种方式

    关于java中遍历map具体哪四种方式,请看下文详解吧. 方式一 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. 1 2 3 4 Map<Integer, Intege ...

  6. java遍历多层map_Java遍历Map对象的四种方式

    文章转自: https://www.cnblogs.com/fqfanqi/p/6187085.html 关于java中遍历map具体哪四种方式,请看下文详解吧. 方式一 这是最常见的并且在大多数情况 ...

  7. Spring中配置Hibernate事务的四种方式

    2019独角兽企业重金招聘Python工程师标准>>> 为了保证数据的一致性,在编程的时候往往需要引入事务这个概念.事务有4个特性:原子性.一致性.隔离性.持久性. 事务的种类有两种 ...

  8. 【Spring】Spring的IOC依赖注入的四种方式

    作者简介:大家好,我是五度鱼,一个普通的Java领域博主,不停输出Java技术博客和干货. 座右铭:锲而不舍,金石可镂. 个人主页:五度鱼学Java的主页 文章目录 前言 1. set注入 2. 构造 ...

  9. spring mvc 返回json数据的四种方式

    一.返回ModelAndView,其中包含map集 /** 返回ModelAndView类型的结果* 检查用户名的合法性,如果用户已经存在,返回false,否则返回true(返回json数据,格式为{ ...

最新文章

  1. python开发信息系统权限设置_[Python学习] Django 权限控制
  2. RHCE认证培训+考试七天实录(一)
  3. 详解python的super()的作用和原理
  4. Centos中配置环境变量
  5. c语言指针和数组的联系
  6. Linux (Ubuntu/CentOS) 添加用户并授予sudo的权限
  7. 它来了!IntelliJ IDEA 2020.1 稳定版发布
  8. lunux安装多个mysql_实例详解linux下多个mysql5.7.19(tar.gz)安装图文教程
  9. Domino(群组工作软件)
  10. 重启docker容器命令
  11. 【老骥伏枥-原创】制作黑威联通启动盘:进阶篇
  12. 苹果Mac系统彻底关闭开机声音duang~
  13. Windows和Linux(Ubuntu)查看电脑主机型号和序列号的命令
  14. 基于Win10的Peach下载安装以及Modbus模糊测试
  15. KPM算法详解(Next数组)
  16. IPO是终点,还是起点?
  17. h5跳转到小程序总是出现页面不存在-微信小程序开发
  18. 生活中的定律之马太效应
  19. 叙述两个计算机应用,计算机应用基础模拟试卷2
  20. 中国传感器制造产业投资前景分析与未来发展战略咨询报告2021-2027年

热门文章

  1. 华为交换机/路由器用户名密码配置
  2. xm、midi音频格式文件互相转化方法及工具
  3. 注解@CrossOrigin
  4. 怎么设置电脑定时关机?(教程方法)
  5. 非Root环境下安卓实现全屏,屏蔽下方虚拟按键:左键、右键。较新安卓系统无法屏蔽Home键。源代码例子
  6. PS显示不能完成请求,因为没有足够内存(RAM)
  7. 以计算机为方向发展的小短文,关于科技改变生活短文
  8. 培训软件测试能不能就业
  9. 通用汽车SUV11月暴涨2.3倍
  10. 怎样使用PDF编辑器?PDF中的图片怎么修改?