spring中的bean是什么(为什么说它是spring应用程序的主干)
spring中的bean是什么(为什么说它是spring应用程序的主干)
2024-07-01 03:10:14  作者:沉沦的苦涩  网址:https://m.xinb2b.cn/know/fcf219340.html

在Spring中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean由Spring IoC容器实例化,组装和管理的对象,它只是应用程序中许多对象之一。Bean与bean之间的依赖关系反映在容器使用的配置元数据中。

一、bean的定义

Spring IoC容器管理一个或多个bean,这些bean是根据配置的参数创建的(例如,在XML中以<bean> <bean/>d的形式定义。这些bean定义主要包括以下元数据:

包限定的类名:通常是正在定义的bean的实际实现类。Bean行为配置元素,说明bean在容器中的行为方式(范围,生命周期回调等)。引用bean执行其工作所需的其他bean。这些引用也称为协作者或依赖项。要在新创建的对象中设置的其他配置设置 - 例如,池的大小限制或在管理连接池的Bean中使用的连接数。

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="configLocation" value="classpath:mybatis-config.xml" />

<property name="dataSource" ref="dataSource" />

<property name="mapperLocations" value="classpath*:mapper/*.xml"/>

</bean>

spring中的bean是什么(为什么说它是spring应用程序的主干)(1)

bean的定义

除了包含有关如何创建特定bean的信息的bean定义之外,这些ApplicationContext实现还允许注册在容器外部(由用户)创建的现有对象。这是通过方法访问ApplicationContext的BeanFactory来完成的getBeanFactory(),该方法返回BeanFactory DefaultListableBeanFactory实现。DefaultListableBeanFactory 通过registerSingleton(..)和 registerBeanDefinition(..)方法支持此注册。

每个bean都有一个或多个标识符。这些标识符在托管bean的容器中必须是唯一的。bean通常只有一个标识符。在基于XML的配置元数据中,可以使用id属性、name属性或两者来指定bean标识符。通常,这些名称是字母数字('myBean','someService'等),但它们也可以包含特殊字符。如果要为bean引入其他别名,还可以在name 属性中指定它们,用逗号、分号或空格分隔。

二、bean的实例化

可以将bean理解为用于创建一个或多个对象的配方。容器在被请求查看命名bean的配方时,可以使用该bean定义封装的配置元数据来创建(或获取)实际对象。如果使用基于XML的配置bean元数据的,创建class属性对应类的实例化的对象。实例化bean对象的方法有两种:

1)使用构造函数实例化

通过构造方法创建bean时,所有普通类都可以使用并与Spring兼容。spring IoC容器可以管理真正的JavaBeans,几乎可以管理任何类。spring通过默认构造函数,创建bean实例,类似于new一个对象。

2)使用静态工厂方法实例化

定义使用静态工厂方法创建的bean时,可以使用class 属性指定包含static方法的工厂类,并通过使用factory-method名称的属性指定工厂方法创建bean实例。如下,通过使用ClientService工厂的createInstance() 静态方法创建bean实例。

<bean id="clientService" class="examples.ClientService" factory-method="createInstance"/>public class ClientService { private static ClientService clientService = new ClientService(); private ClientService() {} public static ClientService createInstance() { return clientService; }}

三、Bean范围

可以通过配置创建的对象的范围,而不必在Java类中限制对象的范围。Spring Framework支持六个范围:1)singleton,将单个bean定义范围限定为每个Spring IoC容器的单个对象实例。2)prototype,将单个bean定义范围限定为任意数量的对象实例。3)request,将单个bean定义范围限定为单个HTTP请求的生命周期。也就是说,每个HTTP请求都有自己的bean实例,它是在单个bean定义的后面创建的。仅在具有Web感知功能的Spring环境中有效ApplicationContext。4)session,将单个bean定义范围限定为HTTP的生命周期Session。仅在具有Web感知功能的Spring环境中有效ApplicationContext。5)application,将单个bean定义范围限定为a的生命周期ServletContext。仅在具有Web感知功能的Spring环境中有效ApplicationContext。6)websocket,将单个bean定义范围限定为WebSocket的生命周期。

spring中的bean是什么(为什么说它是spring应用程序的主干)(2)

singleton

spring中的bean是什么(为什么说它是spring应用程序的主干)(3)

prototype

四、bean生命周期回调

与管理bean的生命周期的容器进行交互,可以实现Spring InitializingBean和DisposableBean接口,对bean的创建和销毁进行管理。Spring Framewor可以k使用BeanPostProcessor来实现任何回调接口并调用适当的方法。除了初始化和销毁​​回调之外,Spring管理的对象还可以实现Lifecycle接口,以便这些对象可以参与启动和关闭过程,这是由容器自身的生命周期驱动的。

spring中的bean是什么(为什么说它是spring应用程序的主干)(4)

bean初始化回调

spring中的bean是什么(为什么说它是spring应用程序的主干)(5)

bean的回收

  • 胸肌中缝训练13个动作(胸肌中缝细节如何训练)
  • 2024-07-01胸肌中缝细节如何训练我是成功减肥50斤的健身爱好者,用最简单的方式讲解健康减肥增肌方法,舒适健身,健康生活!强壮胸肌壮硕的胸肌固然重要,但不注重细节训练胸型就非常难看学习胸肌细节训练对整体胸肌塑形非常重要上篇文章讲了黄金。
  • 椰蓉蛋黄月饼最正宗的做法(自制椰蓉月饼配方简单)
  • 2024-07-01自制椰蓉月饼配方简单月饼年年有新花样,但我觉得最经典的还是儿时能吃到的味道可能是我这个人比较怀旧,或者叫“食古不化”吧印象中小时候第一次吃到老式椰蓉月饼时,就被那浓浓的椰香味所折服我是个土生土长的海南人,对椰子一直情有独。
  • 陕西铁路建设图(陕西省有哪些县不通铁路)
  • 2024-07-01陕西省有哪些县不通铁路本文通铁路的标准为县域内有铁路且设站,包括货运站,毕竟货运铁路也为经济发展做出了重要的贡献本文图片可长按识别原图陕西省有周至县,太白县,旬邑站和淳化县,延川县、志丹县、吴起县、黄龙县,留坝县,岚皋县、。
  • 香港杀手电影叫什么(香港电影中关于杀手的经典影片)
  • 2024-07-01香港电影中关于杀手的经典影片90年代的香港电影关于杀手的影片很多,不知大家有没有看过呢?今天来给大家说几部关于香港电影五大杀手的影片一、《狗咬狗》主演:陈冠希、林嘉华、李灿森《狗咬狗》被称为是香港最暴力的一部影片,陈冠希在影片中。
  • 感恩于心家长写给孩子的一封信(感恩遇见为爱点赞)
  • 2024-07-01感恩遇见为爱点赞尊敬的校领导您好:我是六(1)班某学生妈妈,很冒昧以这样的方式跟您沟通孩子转眼间已上六年级,也即将面临他学生阶段的第一个转折点非常感谢葛小校领导及各位老师对孩子六年来的培养教育及关爱在此,特别感谢六(。
  • 如何了解自己的上升星座(你知道你的上升星座吗)
  • 2024-07-01你知道你的上升星座吗上升星座与十二星座有什么区别呢?十二星座也被大家称为太阳星座,太阳座以人为中心,同时间在太阳运行的轨道上所运行到相对的星座位置通俗来说就是按照日期来算的,而上升星座是生辰(出生确切时间)那上升星座代表。
  • 加了燃油宝之后排气管不滴水了(排气管滴水是怎么回事)
  • 2024-07-01排气管滴水是怎么回事许多人买回汽车之后,只知道开汽车的方法,不懂得如何保养汽车,这就使得汽车频频出现问题,但却无法解决,这个时候往往需要一个老司机为你引领方向汽车的常见问题有很多,zui让人困惑的问题之一无疑是排气管滴水。
  • 皮衣半真皮和全真皮区别(穿了很多年皮鞋皮衣)
  • 2024-07-01穿了很多年皮鞋皮衣生活中,我们与皮革制品接触的地方真是不少,比如日常穿的皮鞋、皮衣,以及包包与皮带等等的皮革制品;那我们真的了解自己所使用的这些东西吗?它们到底是真皮还是PU皮呢?真皮就是将动物表皮剥离下来后经过加工制。
  • 李易峰动物世界海外评价(动物世界幕后揭秘)
  • 2024-07-01动物世界幕后揭秘由韩延执导,李易峰领衔主演,迈克尔•道格拉斯特邀主演,周冬雨特别出演的2018暑期档热门商业大片《动物世界》将于6月29日全球上映6月26日,导演韩延携领衔主演李易峰,与主演曹炳琨、王戈、苏可、迟嘉齐。