spring中的bean是什么(为什么说它是spring应用程序的主干)
spring中的bean是什么(为什么说它是spring应用程序的主干)
2024-06-30 03:50:10  作者:沉沦的苦涩  网址:https://m.xinb2b.cn/sport/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的回收

  • 黄鳝要怎么喂(黄鳝的喂养方法)
  • 2024-06-30黄鳝的喂养方法可以搞点水草放在盆子里或用假水草也行,盖住水面,三天换一次水,水不清了就换天黑的时候给点钓鱼的蚯蚓或面包虫等肉食给它吃,不要喂太多,4只黄鳝2天给4条蚯蚓就行,蚯蚓放在水草上面它吃多了也不长,只要不饿。
  • 虎年行虎运虎年展虎姿好听吗(虎风虎韵齐鲁行)
  • 2024-06-30虎风虎韵齐鲁行文/李固国图片/来自网络虎是百兽之王,在传统文化中以虎为威、以虎为尊、以虎为贵你看虎年到了,就有人想着图个吉利,发一笔虎财二嫂子自然不愿甘居人后可是,她不是属虎的,也没有文化,也跟着随波逐流,难免引起。
  • 带翡翠手镯好吗(带翡翠手镯好不好)
  • 2024-06-30带翡翠手镯好不好戴翡翠手镯的好处:装饰、保健、纪念、信用装饰手镯是妇女的传统装饰品,过去是贵妃人手上的专利,随着生活的改善,旧时的“玉谢堂前燕”,也飞入了“寻常百姓家”一般家庭几乎都有翡翠手镯保健长期佩戴,可以促进人。
  • 快把我哥带走电视剧台词语录(讲述了什么)
  • 2024-06-30讲述了什么电影里彭昱畅饰演的哥哥时分,表面上一个惹是生非的人,其实其心思细腻,私下里为妹妹付出很多,他也懂得体谅爸妈的苦衷,是一个称职的好哥哥,也是父母懂事的孩子但是由于他平时做事神经大条,目的是为了逗妹妹开心。
  • 6字游戏名字精选(6字游戏名字推荐)
  • 2024-06-306字游戏名字推荐乖一点就爱你十二月的奇迹扑进先生怀里起名真费劲儿我年轻我任性此情可待追忆森林里的麋鹿何必太在乎你小屁孩べ卟懂嗳想做你的礼物为将来而努力面纱下的苦涩天空破碎的心奶瓶,还我初吻茉莉花的清香っ滚出我的世界心。
  • 香蕉酸奶各种做法(一个香蕉一瓶酸奶)
  • 2024-06-30一个香蕉一瓶酸奶在各种面包里面,我最喜欢的就是吐司,它不像其他面包一样,有馅料或者其他配料等,非常简单正因为如此,吐司可以变化着做出不同的美食出来,例如蒜香吐司条、三明治、西多士,以及今天要分享的这个酸奶香蕉吐司,味。
  • c2h6和氧气反应化学方程式(显示水杯中饮料的化学分子结构式)
  • 2024-06-30显示水杯中饮料的化学分子结构式一家店为了吸引一些化学爱好者,在水杯上浮雕了化学分子结构式,包括水,啤酒,咖啡,红酒,威士忌客户在引用饮料的同时还可以讨论分子结构,估计H2O都认识吧?本文为“喜格物”原创整理,转载请注明“来源:喜格。
  • (跟同事到店体验保养全过程)
  • 2024-06-30跟同事到店体验保养全过程早些年,经常会有亲戚朋友向我发来4S店的检修单,让我看看保养项目是否存在猫腻(在以往4S店开出的保养清单中,很容易就能发现例如线路养护、发动机深度清洁等看似有用但完全没必要的保养项目)在不同品牌4S店。
  • 韩信教学s19赛季(王者荣耀S19韩信34)
  • 2024-06-30王者荣耀S19韩信34王者荣耀S19赛季已经开启,在新版本当中很多英雄都调整而作为路人局当中上场率颇高的韩信也迎来了加强,看上去只是加了10%攻速影响不大,但是实际上真是个不小的加强主播寂然的代表英雄就是韩信,他是七国服韩。
  • 高校年夜饭菜单(冰墩墩水果宴八宝饭)
  • 2024-06-30冰墩墩水果宴八宝饭冰墩墩、时光陀螺、7000斤水果、八宝饭……2022年毕业季如约而至,全国许多高校为毕业生准备了独特的毕业礼物,希望毕业生们可以带着母校永恒的思念和祝福,奔赴更好的未来广州美术学院:毕业生实现“一人一。
  • 绝世高手卢正雨找东西(绝世高手卢卓与徐文珊对手戏默契十足)
  • 2024-06-30绝世高手卢卓与徐文珊对手戏默契十足电影《绝世高手》正在暑期档热映,范伟饰演的“杰瑞”和陈冲“汤姆”的爱情故事令人唏嘘!回忆过往年轻帅气“小杰瑞”(卢卓饰)帅气出场,可谓本色出演与“小汤姆”徐文珊在电影里默契十足,完美诠释了一段“回忆杀。