Bean对象的基本配置

在软件应用中由Spring管理的所有的对象都称之为Bean,我们自己创建 的类假如需要由Spring管理,首先需要对这个类进行配置。
常用的配置方式:1.基于xml进行配置 2.基于注解进行配置
基于xml方式对Bean对象进行配置时,首先需要在Spring核心配置文件中使用bean标签对bean类型进行声明。借助id或name属性指定的bean的一个标示,通过class属性指定bean的具体类型(必须写全类名)

Bean对象的构建

1.直接通过构造方法

<bean id="hello" class="beans.HelloService" />

2.通过类的静态工厂方法创建对象(例如:Calendar的getInstance方法就是工厂方法)

<bean id="calendar" class="java.Calendar"
factory-method="getInstance"/>

注意:factory-method用于该类是抽象类时或不能直接创建对象时


3.通过实例的实例方法(例如通过Calendar对象的getTime方法获取Date对象)

<bean id="date" factory-bean="calendar"
factory-method="getTime" />

说明:以上无论通过哪种方式构建对象,底层都会用到反射

Bean对象的作用域

在Spring容器中管理的Bean对象,可以在声明时通过scope属性或相关注解指定其作用域,最常用的是singleton,prototype。

singleton

这个作用域标识的对象具备全局唯一性,创建时只会创建一个对象
,不会重复创建新的对象。系统默认情况下时singleton标识

prototype

这个作用域标示的对象每次获取都会创建新的对象

思考:
1.Spring为什么要为Bean设置作用域(更好的管理内存)
2.假如没有Spring如何保证一个类的实例具备全局唯一性?(单例模式)
3.单利模式如何实现,有哪些实现方式,这些实现方式有什么不同?

Bean对象的生命周期

在Spring框架应用中,所有的Bean对象都有生命周期,Bean对象的生命周期是指对象的创建,初始化,服务,销毁这个过程。可以通过Init-methos,destroy-metho的属性指定生命周期方法。
在Spring应用由Spring创建的对象是否是由spring销毁还得取决于作用域的配置。例如:
1.singleton作用域的对象可以在容器关闭时被销毁
2.prototype作用域的对象可以由容器创建对象,初始化对象,但不能销毁对象。

Bean对象的延迟加载

在spring中,容器默认初始化时会构建所有由spring管理的所有的bean对象。但假如这些对象长时间不使用还占用内存就会造成一定的资源浪费。为解决这个问题,Spring设计了延迟加载机制。通过这种机制来提高系统资源的使用。
Spring中的延迟加载需要使用bean元素中的lazy-init属性或beans中的default-lazy-init=“true”属性进行设置,二者的应用的不同点:
1.lazy-init:应用在bean标签中用于指定这个bean的加载策略
2.default-lazy-init:应用在beans标签中用于指定所有的bean的加载策略

Spring Bean对象相关推荐

  1. 【Spring实战】注入非Spring Bean对象

    2019独角兽企业重金招聘Python工程师标准>>> 大家经常用到Spring IOC去管理对象之间的依赖关系,但一般情况下都有一个前提:这些Bean对象必须是通过Spring容器 ...

  2. Filter获取Spring Bean对象

    Filter拦截器获取Bean SSM框架中,Bean都是被Spring容器管理的,使用的时候,直接通过注解@Autowired,注入即可 在Filter中,不能使用@Autowired注解注入,通过 ...

  3. spring bean对象的生成及数据注入的时机 -》getBean

    大家都知道在spring中bean对象的生成分两类一类是预加载,也就是说在容器初始化的时候把bean注入生成的事情一起干了.另一类是需要开发者主动调用getBean来获取bean对象. 1.预加载函数 ...

  4. 170630、springboot编程之普通类中调用spring管理的bean对象

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用 ...

  5. spring boot获取spring容器中的bean对象

    我们知道如果我们要在一个类使用  spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接 ...

  6. Spring详解:WebServlet 中不能注入Bean对象

    1. 前言 最近在研究Spring IOC.AOP以及和Mybatis整合的时候发现在Spring中使用Servlet+Service+Dao(Mybatis)的时候,发现在Controller层也就 ...

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

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

  8. Spring IOC 容器源码分析 - 创建原始 bean 对象

    1. 简介 本篇文章是上一篇文章(创建单例 bean 的过程)的延续.在上一篇文章中,我们从战略层面上领略了doCreateBean方法的全过程.本篇文章,我们就从战术的层面上,详细分析doCreat ...

  9. 【工具类】手动获取被spring管理的bean对象

    package com.zxl;import org.springframework.beans.BeansException; import org.springframework.context. ...

最新文章

  1. [JAVAEE] 理解“自然模板“+使用 ModelAndView 对象
  2. mysql 主从 怎么 升级_MySQL详解主从(主库升级).doc
  3. oracle基础之工具系列(持续更新中,,)
  4. 三对角矩阵(带状矩阵)的压缩存储原理
  5. 数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
  6. 几台WEB经常宕机,求分析原因
  7. .mod.c 是什么文件
  8. mx250显卡天梯图_笔记本电脑显卡分析(天梯图)
  9. AWR Report and session_cached_cursor
  10. 大数据学习——yarn集群启动
  11. The Reactive Manifesto(响应式宣言)
  12. 数据挖掘十大经典算法之——SVM 算法
  13. 当深度学习遇上量化交易——模型篇
  14. DWG 、DXF格式互转、CAD版本转换,记住一个就能快速提高你的工作效率!
  15. 计算机屏幕蓝光,电脑如何设置防蓝光?降低电脑屏幕蓝光危害的方法
  16. VIVADO HLS数组的优化
  17. 远程访问linux图像桌面,在windows下远程访问linux桌面
  18. Android手机哪个悬浮好用,别羡慕苹果了,安卓悬浮神器比 iPhone 好用太多!
  19. win10打印机共享问题集,及解决方法持续更新
  20. Coursera--DataStructure-加州理工大学圣地亚哥分校课程

热门文章

  1. 使用宝塔Linux面板搭建Springboot项目
  2. 大数据入门:WordCount程序解析
  3. 作为一个图文创作者,如何才能做好抖音短视频创作呢?
  4. 用java代码写个蛋糕_【技术蛋糕】Java编程中写出好代码的建议
  5. android内存压力测试,Android内存压力测试工具(memtester移植)
  6. uni-app绘制印章
  7. 【特别篇】NOIP2017划水记
  8. 微信小程序----vant_栅格布局
  9. jspxcms 4.0 mysql 5.0_jspxcms
  10. #AE 中对矢量数据的基本操作: