spring中的bean是什么(为什么说它是spring应用程序的主干)
spring中的bean是什么(为什么说它是spring应用程序的主干)
2024-11-22 02:10:26  作者:沉沦的苦涩  网址: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>


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-11-22地球究竟会以哪种方式毁灭九种地球毁灭的方式从全球变暖到外星入侵,好莱坞不断将世界毁灭搬上银幕例如在一三年五月三十一日上映的《重返地球》,一波波地震、洪水、台风等各种自然灾害使得地球不再宜居,人类不得不移居主星诺娃虽然电影只是。
  • 米老鼠的故事(米老鼠的起源有几种说法)
  • 2024-11-22米老鼠的起源有几种说法官方版:官方公布资料显示,米奇的前身是1927年华特·迪士尼和伍培·埃沃克斯创造的动画形象幸运兔子奥斯华(OswaldtheLuckyRabbit),在奥斯华的版权被环球影业窃取后,伍培在奥斯华的基础。
  • 人生应该及时行乐的句子(非常经典的句子)
  • 2024-11-22非常经典的句子时间在不停的过,生活,就应该努力的使之美好起来但不可强求,强求就会自己给自己过不去,处处感到不如意有追求,但不苛求强求,人就会变得洒脱、快乐、幸福我们对自己做出的每一件事,说出的每一句话,都应该有足够。
  • 儿童教育机构如何管理(儿童教育培训要避免踩雷)
  • 2024-11-22儿童教育培训要避免踩雷教育是立国之本,强国之基,是孩子未来发展的核心竞争力现如今,许多家长都意识到儿童早期教育的重要性,各类儿童教育培训机构为迎合需求,如雨后春笋般出现在教育市场,也因此引发大量教育培训纠纷“六一”儿童节马。
  • 黄金卖当铺还是金店(逛金店像逛菜市场)
  • 2024-11-22逛金店像逛菜市场图片来源@视觉中国文丨霞光社,作者丨照川,编辑丨贝尔十一假期的结婚旺季刚刚过去,年轻人就晒出了手上黄澄澄的金子除了传统中式婚礼给新娘购置的“三金”外,还有周六福家的婚嫁系列黄金凤钗、周大福家的九宝嫁妆。
  • 同性之间的未解之谜(同性恋不是人类特有)
  • 2024-11-22同性恋不是人类特有图片来源|Pixabay内容来源:玩数医药圈异性相吸,同性相斥,在人类的认知中,同性恋是个矛盾的存在随着人类社会的进步,越来越多的人开始接受和理解同性恋这个特别的群体放下意识的衡量与评判,纵观整个生物。
  • 天津权健冲超时刻(顾超禁区内抛球低级失误)
  • 2024-11-22顾超禁区内抛球低级失误虎扑5月1日讯北京时间19:35,足协杯第5轮,天津权健主场迎战江苏苏宁易购比赛第57分钟,由于雨天导致球太滑,顾超手抛球出现失误后出现二次接球,主裁判吹给权健一次在禁区内的定位球机会随后任意球开出,。
  • 桃李草莓三明治的做法 草莓季教你做个简单快手又美味的草莓三明治
  • 2024-11-22桃李草莓三明治的做法 草莓季教你做个简单快手又美味的草莓三明治草莓营养价值丰富,被誉为是“水果皇后”,含有丰富的、等营养物质草莓中富含丰富的膳食纤维,可促进胃肠道的蠕动,促进胃肠道内的食物消化草莓虽好,但是应季的时间段是少之又少,每年的4月份是最佳吃草莓的时间转。
  • 反腐一线的纪检员(他比自家人还亲)
  • 2024-11-22他比自家人还亲秦巴山区腹地,陕西省石泉县奎星村,由贫困户入股建成的奎星养牛场在滴滴答答的雨声中迎来了第46头小牛犊养牛场的工作人员围在牛犊旁边,商量过后给它起名为“春妞”,期望养牛场像春天一样生机勃勃养牛场从办起来。
  • 大棚水蒸汽怎么解决(大棚水蒸汽解决方法)
  • 2024-11-22大棚水蒸汽解决方法定期通风换气:之前我们就说了,温室大棚中所以比较潮湿主要还是因为其密封造成的,所以适当地通风换气是降湿的好办法不过也不是随时都可以进行通风,必须要在室外温度比较高时进行,否则会引起室内温度下降如果通风。
  • 透气网面鞋怎么清洗干净在家(透气网面鞋清洗干净的方法)
  • 2024-11-22透气网面鞋清洗干净的方法首先,在鞋表面使用干牙刷清洁鞋表面上的灰尘,以方便后续清洁用肥皂水清洗,将牙刷浸入少量肥皂水中,在网眼表面轻轻擦洗,重复数次,直到鞋面浸透为止如果鞋面变黄,则需要使用一些还原性物质比如牙膏用牙刷蘸一点。