Spring Bean Scopes作用域
当定义一个Spring的<bean>,必须声明bean 作用域的选项。例如,要强制Spring需要产生一个新的bean实例,应该声明bean的scope属性为prototype。如果你希望Spring 每次都返回同一个bean实例,应该声明bean的作用域,方式类似属性是单例。
Spring框架支持以下五个作用域,其中三个只有当您使用Web感知的 ApplicationContext 可用。
范围 | 描述 |
---|---|
singleton | This scopes the bean definition to a single instance per Spring IoC container (default). |
prototype | This scopes a single bean definition to have any number of object instances. |
request | This scopes a bean definition to an HTTP request. Only valid in the context of a web-aware Spring ApplicationContext. |
session | This scopes a bean definition to an HTTP session. Only valid in the context of a web-aware Spring ApplicationContext. |
global-session | This scopes a bean definition to a global HTTP session. Only valid in the context of a web-aware Spring ApplicationContext. |
本章将讨论前两个范围和其余三将讨论的时候,我们将讨论有关Web感知Spring的ApplicationContext。
singleton作用域:
如果范围设置为单例,Spring IoC容器创建了一个由该bean定义的对象只有一个实例。这个单一实例存储在这样的单例bean的高速缓存,以及所有后续请求和引用针对该bean返回缓存对象。
默认范围是始终单例,但是当你需要bean的一个实例,可以设置的范围属性单例在bean配置文件中,如下图所示:
示例:
让我们使用Eclipse IDE,然后按照下面的步骤来创建一个Spring应用程序:
步骤 | 描述 |
---|---|
1 | Create a project with a name SpringExample and create a package com.yiibai under the src folder in the created project. |
2 | Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter. |
3 | Create Java classes HelloWorld and MainApp under the com.yiibai package. |
4 | Create Beans configuration file Beans.xml under the src folder. |
5 | The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below. |
这里是HelloWorld.java 文件的内容:
以下是MainApp.java文件的内容:
以下是需要singleton作用域配置文件beans.xml文件:
一旦创建源代码和bean配置文件来完成,运行应用程序。如果一切顺利,这将打印以下信息:
Your Message : I'm object A Your Message : I'm object A
原型作用域:
如果范围设置为原型,那么Spring IoC容器创建对象的新的bean实例为每个特定的bean发出请求时的时间。作为一项规则,使用prototype作用域为所有状态的bean类和singleton作用域为无状态的bean。
要定义一个原型作用域,可以设置的范围属性为原型的bean配置文件中,如下图所示:
示例:
让我们在地方工作的Eclipse IDE,然后按照下面的步骤来创建一个Spring应用程序:
步骤 | 描述 |
---|---|
1 | Create a project with a name SpringExample and create a package com.yiibai under the src folder in the created project. |
2 | Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter. |
3 | Create Java classes HelloWorld and MainApp under the com.yiibai package. |
4 | Create Beans configuration file Beans.xml under the src folder. |
5 | The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below. |
这里是HelloWorld.java 文件的内容:
以下是MainApp.java文件的内容:
以下是必需的原型作用域的配置文件beans.xml:
创建源代码和bean配置文件完成后,让我们运行应用程序。如果一切顺利,这将打印以下信息:
Your Message : I'm object A Your Message : null

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring bean定义
形成应用程序的骨干是由Spring IoC容器所管理的对象称为bean。bean被实例化,组装,并通过Spring IoC容器所管理的对象。这些bean由容器提供,例如,在XML的<bean/>定义,已经看到了前几章的形式配置元数据创建。 bean定义包含所需要的容器要知道以下称为配置元数据的信息: ●如何创建一个bean ●Bean 生命周期的详细信息 ●Bean 依赖关系 上述所有配置元数据转换成一组的下列属性构成每个bean的定义。 属性 描述 class 此属性是强制性的,并指定bean类被用来创建bean。 name 此属性指定唯一bean标识符。在基于XML的配置元数据时,您可以使用id和/或name属性来指定bean标识符 scope 该属性指定一个特定的bean定义创建,它会在bean作用域本章要讨论的对象范围。 constructor-arg 这是用来注入的依赖关系,并在接下来的章节中进行讨论。 properties 这是用来注入的依赖关系,并在接下来的章节中进行讨论。 autowiring mode 这是用来注入的依赖关系,并在接下来的章节中进行讨论。 ...
- 下一篇
四面轻松突围!我是如何斩获高级运维开发一职的?
最近,我收到了一来自爱奇艺的高级运维开发岗面试邀请,一波三折之后也算首战告捷了。本文就来分享下我去面试的经历,希望给大家带来些帮助。 准备环节 接到 HR 的电话后,我便跟妹子约好了具体的面试时间和地点(插句题外话,我绝对没有被妹子软萌的声音酥到)。 在去之前,我看了下爱奇艺的岗位介绍,毕竟有备无份。如果成功面上了,我也是需要再考虑下的对吧(毕竟他们除了要我,还有其他选择吗)。那最爽的结果就是手握各大厂的 OFFER,然后沉浸在无法做出选择的幸福中了。 准备过程中,我发现他们的要求中需要对 ansible 熟悉,而我之前恰好有用过 ansible,但是更为熟悉的还是 saltstack。 因为产品化的东西更吸引我,在工作中也用其做过二次开发,所以又对 ansible 额外做了一些调研,比如说自己动手写了几个 PlayBook,包括 Pyth
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址