博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Spring】Spring常用配置-Bean的Scope
阅读量:6212 次
发布时间:2019-06-21

本文共 2624 字,大约阅读时间需要 8 分钟。

转载请注明出处:

本文源自【】

分析

Scope(范围)描述的是Spring容器如何新建Bean的实例的。可以简单的理解成Bean的作用范围!

Spring的Scope有以下的几种,可以通过@Scope注解来实现。

1、singleton:一个Spring容器中只有一个Bean的实例。    这是Spring的默认配置,也就是不写@Scope("singleton"),全容器共享一个实例。2、prototype:每次调用都会新建一个Bean的实例。3、request:Web项目中,给每一个http request新建一个Bean实例。    也就是每一个request请求,都会新建一个Bean。4、session:Web项目中,给每一个http session新建一个Bean实例。    也就是同一个session访问的请求,都是同一个Bean。5、globalSession:这个只在portal应用中有用,给每一个global http session新建一个Bean实例。

在Spring Batch中还有一个Scope是使用@StepScope的,这里就不介绍了。以后会有博客提到。

现在要去了解的,请自行谷歌。

下面的实例是简单的演示默认的singleton和prototype,分别从Spring容器中获得2次Bean,分别用==与equals判断Bean的实例是否相等!

示例

singleton的Bean

package cn.hncu.p2_1_1Scope;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Service;/** * Created with IntelliJ IDEA. * User: 陈浩翔. * Date: 2016/11/11. * Time: 上午 11:09. * Explain:Singleton---默认Spring-Scope */@Service//默认@Scope为Singleton-相当于添加//@Scope("singleton")public class DemoSingletonService {
}

prototype的Bean

package cn.hncu.p2_1_1Scope;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Service;/** * Created with IntelliJ IDEA. * User: 陈浩翔. * Date: 2016/11/11. * Time: 上午 11:23. * Explain:编写Prototype的Bean */@Service@Scope("prototype")public class DemoPrototypeService {
}

配置类

package cn.hncu.p2_1_1Scope;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;/** * Created with IntelliJ IDEA. * User: 陈浩翔. * Date: 2016/11/11. * Time: 上午 11:42. * Explain:配置类 */@Configuration@ComponentScan("cn.hncu.p2_1_1Scope.")public class ScopeConfig {
}

运行

package cn.hncu.p2_1_1Scope;import org.springframework.context.annotation.AnnotationConfigApplicationContext;/** * Created with IntelliJ IDEA. * User: 陈浩翔. * Date: 2016/11/11. * Time: 上午 11:43. * Explain:运行类 */public class Main {
public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ScopeConfig.class); DemoPrototypeService p1 = context.getBean(DemoPrototypeService.class); DemoPrototypeService p2 = context.getBean(DemoPrototypeService.class); DemoSingletonService s1 = context.getBean(DemoSingletonService.class); DemoSingletonService s2 = context.getBean(DemoSingletonService.class); System.out.println("p1.equals(p2):"+p1.equals(p2));//false System.out.println("p1==p2:"+(p1==p2));//false System.out.println("s1.equals(s2):"+s1.equals(s2));//true System.out.println("s1==s2:"+(s1==s2));//true }}

运行结果

项目链接—具体包:

本文章由编写, 所有权利保留。

转载请注明出处:

本文源自【】

你可能感兴趣的文章
《深入浅出机器学习》之强化学习
查看>>
苹果和FBI出庭日期延后
查看>>
音频降噪在58直播中的研究与实现
查看>>
访谈《敏捷和精益项目集管理》的作者Johanna Rothman
查看>>
大数据框架对比:Hadoop、Storm、Samza、Spark和Flink
查看>>
Oracle推出轻量级Java微服务框架Helidon
查看>>
想像亚马逊或 Netflix 一样酷?抱走敏捷转型五大秘籍
查看>>
全端Web开发:快速开发实践
查看>>
BitKeeper 7.3发布,新增从Git快速导入等功能
查看>>
网易戏精ARCore短视频新玩法实践
查看>>
Yarn将用TypeScript重写,Flow惨遭亲爹抛弃!
查看>>
自动加载与命名空间
查看>>
下一个游戏新风口已来?小游戏或成2018年最大游戏黑马
查看>>
用TypeScript开发爬虫程序
查看>>
阴影类型
查看>>
css自适应正方形的方案
查看>>
用nrm管理registry以及npm缓存目录
查看>>
用于解答算法题目的Python3代码框架
查看>>
mybatis参数格式化异常:NumberFormatException: For input string:"xx"
查看>>
Docker 1.12的哪些特性使它更像 kubernetes?
查看>>