一.实例化的三种方式

1.使用无参构造方法实例化(最常用)

xml配置

 <bean id="userDao" class="dao.impl.UserDaoImpl"/>
id为要实例化的对象它是Bean实例在Spring容器中的唯一标识
class 是要实例化的类的全类名
它会根据默认无参构造方法来创建类对象
如果bean中没有默认无参构造函数,将会创建失败

测试类

  public void test() {ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");USerDao userDao = (USerDao) app.getBean("userDao");userDao.save();  //通过得到的对象调用方法}

2.工厂静态方法实例化

public class StaticFactoryBean {public static UserDao createUserDao(){    return new UserDaoImpl();}
}

静态方法可以直接使用类名进行调用,所以StaticFactoryBean类不需要进行实例化
xml 配置

class静态工厂的全类名,factory-method静态工厂的方法<bean id="userDao" class="factory.StaticFactoryBean" factory-method="createUserDao" />

3.工厂实例方法实例化

public class DynamicFactoryBean {  public UserDao createUserDao(){        return new UserDaoImpl(); }
}

该类中的方法为非静态,所以必须先实例化类才能调用方法
xml配置

  <bean id="factoryBean" class="factory.DynamicFactoryBean"/>factory-bean工厂的实例化对象,factory-method实例工厂的方法<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>

二.scope标签及对比

取值 说明
singleton 默认值,单例的
prototype 多例的
request Spring创建一个Bean的对象,并将对象存入到request域中
session Spring创建一个Bean的对象,并将对象存入到session域中
global session 应用在Portlet环境,如果没有Portlet环境那么globalSession就相当于session

常用的两种取值对比
1)当scope的取值为singleton时

Bean的实例化个数:1个

Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例

对象创建:当应用加载,创建容器时,对象就被创建了

对象运行:只要容器在,对象一直活着,存在于容器中

对象销毁:当应用卸载,销毁容器时,对象就被销毁了

2)当scope的取值为prototype时

Bean的实例化个数:多个

Bean的实例化时机:当调用getBean()方法时实例化Bean

对象创建:当使用对象时,创建新的对象实例

对象运行:只要对象在使用中,就一直活着,存在于内存中

对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了

Bean实例化的三种方式相关推荐

  1. Spring配置文件-Bean实例化的三种方式

    1.无参构造方法实例化(详见我的博客) 2.工厂静态方法实例化 创建StaticFactory类 public class StaticFactory {public static UserDao g ...

  2. Spring中bean实例化的三种方式:默认构造、静态工厂、实例工厂

    1. 默认构造方式:必须提供默认构造 <bean id="bean id" class="工厂全限定类名"></bean> 以Studn ...

  3. @Import-给容器中加载bean的第三种方式

    给容器中注册组件: 1)包扫描+组件标注注解(@Controller/@Service/@Repository/@Component) 2)@Bean[导入的第三方包里面的组件] 3)@Import[ ...

  4. Spring创建Bean的三种方式的使用和区别

    在学习Spring的时候,发现Spring的IOC(控制反转)为我们提供的三种创建Bean的方式. 1.Spring创建Bean的三种方式 这里采用XML配置,分别演示三种创建Bean的方式和代码. ...

  5. 05.bean依赖注入的三种方式

    05.bean依赖注入的三种方式 1.概述 依赖注入 DI(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现. 在编写程序时,通过控制反转,把对象的创建交给 ...

  6. SpringBoot静态获取 bean的三种方式,你学会了吗?

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/showchi/article/details/97005720 注意:调用者要被spring管理 ...

  7. java bean 工厂模式_Spring框架通过工厂创建Bean的三种方式实现

    工厂模式 Spring中bean的创建,默认是框架利用反射new出来的bean实例.有时候也会有一些复杂的情况. 假设有一个飞机,属性如下,现在需要造很多同型号的飞机,那么唯一需要改变的属性只有Dri ...

  8. 把对象的创建交给spring来管理——  1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期

    把对象的创建交给spring来管理 spring对bean的管理细节     1.创建bean的三种方式     2.bean对象的作用范围     3.bean对象的生命周期 创建Bean的三种方式 ...

  9. 五、创建Bean的三种方式

    五.创建Bean的三种方式 转载于:https://www.cnblogs.com/ljiwej/p/7280614.html

最新文章

  1. 弯道极限超车、击败人类顶级玩家,索尼AI赛车手登上Nature封面
  2. Struts2 异常处理
  3. 招银网络笔试java_2020招银网络科技校园招聘常见问题
  4. 10012 - How Big Is It?
  5. 一次远程支持事故的教训,与大家分享
  6. There is no getter for property named ‘col‘ in ‘class String‘,不是说一个参数不需要@Param注解吗?#{}和${}的区别
  7. wxWidgets:测试样品
  8. java中qq中拉伸的文件,delphi中如何实现QQ中的截图并实现拉伸放大移动的功能
  9. PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍...
  10. 为什么互联网公司天天都在招人?
  11. Python学习手册(第4版).pdf
  12. 程序员那些必须掌握的排序算法(上)
  13. 网络高清监控摄像头如何安装(图文方法+模拟像机)
  14. CSDN 第六期编程竞赛做题记录
  15. js根据生日输出对应的生肖和星座
  16. centos 7.3 iscsi登录失败问题及解决方法
  17. Mysql Nested-Loop Join算法和MRR
  18. Linux 静态IP,动态IP配置
  19. [element]element-ui框架下载
  20. Android Intent之传递带有对象的集合(Serializable传递对象和对象集合)

热门文章

  1. java字节字符单位换算_Java基础,字节字符
  2. Php迁移其他服务器,phpwind 论坛迁移过程
  3. 视频怎么压缩大小?这几种方法试试看
  4. Gatsby精粹,面向未来的blog
  5. WebService基础使用(一)
  6. 切换使用32位和64位的nodejs
  7. 如果iPhone销量下滑,苹果向服务转型将难以成功
  8. 树和二叉树 (C语言)《数据结构与算法》
  9. Cesium调用天地图服务【亲测可用】
  10. php超链接鼠标滑动加下划线,打造与众不同的鼠标滑过超链接下划线动画效果