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


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的生命周期。


singleton


prototype

四、bean生命周期回调

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


bean初始化回调


bean的回收

  • 胰腺的解剖图是什么(胰腺的解剖与常见变异)
  • 2024-10-01胰腺的解剖与常见变异文章来源:影领学苑胰腺正常发育胰腺形态变异胰腺发育不全胰腺移行异常胰管正常解剖胰管融合发育胰管变异背胰发育不全背胰完全不发育:”胰颈胰体胰尾Santorini导管”缺如,胰头正常增强CT:有轻度扩张胰。
  • 球球大作战如何遇到高智商队友(腹背受敌怎么办)
  • 2024-10-01腹背受敌怎么办说到球球大作战这款休闲游戏,相信大家肯定不会陌生不知不觉间,这款游戏已经陪伴我们好几年了随着游戏热度不断提高,也诞生了很多优秀的主播,来自KS平台的炎帝就是其中一位如果你看过他的直播,肯定会被他个人技。
  • 楚乔传宇文玥的母亲为啥发疯(楚乔传谍纸天眼的秘密被解开)
  • 2024-10-01楚乔传谍纸天眼的秘密被解开《楚乔传》中不得不说每个人的命运真的是千奇百态,在那个战乱的时代,每个人都不知道自己命运的下一步会走到了哪里,燕洵、楚乔如此,宇文玥也是如此,很多人应该都不知道宇文玥背后的秘密吧其实宇文玥为了楚乔做了。
  • louis vuitton笔记本(全球最轻13寸变形本LAVIE)
  • 2024-10-01全球最轻13寸变形本LAVIENEC最新正是推出了三款全新13.3英寸LAVIEHybridZero二合一变形本,并声称其是目前全球同类型产品中最轻的据介绍,新发布的LAVIEHybridZero变形本包括HZ350、HZ550、。
  • 老师一边刷抖音一边教课(学生和老师一起在课堂上)
  • 2024-10-01学生和老师一起在课堂上长江日报大武汉客户端4月13日讯(记者陈晓彤通讯员张慧)4月12日,武汉华夏理工学院的课堂上,学生和老师一起打开抖音,兴致勃勃“刷”起来这不是在上课“摸鱼”,而是该校网络与新媒体专业的一门专业课——《。
  • 苹果笔记本迁移教程(苹果笔记本数据迁移)
  • 2024-10-01苹果笔记本数据迁移随着苹果笔记本的普及程度提高,好多人对苹果的OS系统也是越来越喜欢了,今天发现了一个在苹果电脑之间直接数据迁移的方法,真的是很高效,分享给大家,希望对更新换代苹果笔记本的朋友们有所帮助!开始给Mac“。
  • 刀削面好吃的调料(凉拌刀削面)
  • 2024-10-01凉拌刀削面家里人都非常爱吃面食,所以一有空就喜欢做各种面食和家人们一起共享,今天得空,就做了一道凉拌刀削面,豆友们一起来吧By嘿嘿辣妈用料白面500克牛肉200克青红黄椒适量胡萝卜适量生抽少许盐2克葱姜蒜适量木。
  • 预定国庆档最值得看的电影(8月还有那些值得一看电影)
  • 2024-10-018月还有那些值得一看电影被国产片承包半壁江山的暑期档已经过去了1个月了....爱慕进口大片的你们是不是有些焦躁,什么时候能等来好莱坞大片!别急,这就来了!高口碑、好剧情、燃爆表的狂野飙车大片《极盗车神》好莱坞动画电影《赛车总。
  • 带你去长安城寻找盛唐遗风(虚幻东京一梦)
  • 2024-10-01虚幻东京一梦若是谈起古代的集市,其实最为根本的了解途径便是今日的广场,而广场上琳琅满目的货物便是在昔日集市的演变总得来说,虽然集市本身的职能以及类型在不断发生着改变,但是集市两种基本功能却是一直延续至今,一来自然。