【Spring】Spring常用配置-Bean的Scope
发布日期:2021-06-29 13:38:38 浏览次数:2 分类:技术文章

本文共 2616 字,大约阅读时间需要 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 }}

运行结果

项目链接—具体包:

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

转载请注明出处:

本文源自【】

转载地址:https://chenhx.blog.csdn.net/article/details/53127993 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【错误解决】[Maven] cannot be opened because it does not exist错误[文件无法编译到target目录下的解决方法]
下一篇:【PHP】PHP基础知识与C++、Java等C家族的重点区别

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月06日 22时00分29秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

基于RTT-MicroPython制作自带BGM的新型肺炎晴雨表 2019-04-29
Arm宣布推出Cortex-M55核心和Ethos-U55 microNPU,瞄准低功耗Edge AI 2019-04-29
开源项目|RT-Thread 软件包应用作品:小闹钟 2019-04-29
在 RT-Thread Studio 上使用 RT-Thread Nano 2019-04-29
开源项目|软件包应用作品:通用物联网系统平台 2019-04-29
【经验分享】RT-Thread UART设备驱动框架初体验(中断方式接收带\r\n的数据) 2019-04-29
单片机里面的CPU使用率是什么鬼? 2019-04-29
推荐一个优质Linux技术公众号-作者都是一线Linux代码贡献者们哦 2019-04-29
RT-Thread 编程风格指南 2019-04-29
95后高校电子教师,软硬兼修有趣有料! 2019-04-29
使用 STM32 通用 Bootloader ,让 OTA 更加 Easy 2019-04-29
Cache 的基本概念与工作原理 2019-04-29
装机量超亿台 RISC-V +IoT OS!中科蓝讯与RT-Thread战略合作,共推自主物联网生态发展 2019-04-29
Android程序员必备!面试一路绿灯Offer拿到手软,Android面试题及解析 2019-04-29
Android程序员的春天!12个View绘制流程高频面试题,分享PDF高清版 2019-04-29
深入交流安卓!新鲜出炉的Android面试真题集锦我给你们整理出来了!Android面试题及解析 2019-04-29
深入浅出Android开发!你会的还只有初级工程师的技术吗?一线互联网公司面经总结 2019-04-29
深度剖析原理!超全Android中高级面试复习大纲,含BATJM大厂 2019-04-29
温故而知新!Android开发者该学习哪些东西提高竞争力?成功入职阿里 2019-04-29
火爆知乎的Android面试题-Android-App的设计架构经验谈,大厂内部资料 2019-04-29