今天主要从以下几方面来介绍一下@Scope注解

  • @Scope注解是什么

  • @Scope注解怎么使用

  • @Scope注解的使用场景

1,@Scope注解是什么


@Scope注解是springIoc容器中的一个作用域,在 Spring IoC 容器中具有以下几种作用域:基本作用域singleton(单例)prototype(多例),Web 作用域(reqeust、session、globalsession),自定义作用域

a.singleton单例模式 -- 全局有且仅有一个实例
b.prototype原型模式 -- 每次获取Bean的时候会有一个新的实例
c.request -- request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效
d.session -- session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效
e.globalsession -- global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义

2,@Scope注解怎么使用


直接在bean对象方法上增加@Scope注解就可以如下:

/**     * 定义一个bean对象     * @return     */    @Scope    @Bean(value="user0",name="user0",initMethod="initUser",destroyMethod="destroyUser")    public User getUser(){        System.out.println("创建user实例");        return new User("张三",26);    }

@Scope注解默认的singleton实例,singleton实例的意思不管你使用多少次在springIOC容器中只会存在一个实例,演示如下只打印了一次创建实例:

AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainConfig.class);User bean2 = applicationContext2.getBean(User.class);System.out.println("实例1 === "+bean2);User bean3 = applicationContext2.getBean(User.class);System.out.println("实例2 === "+bean3);
创建user实例实例1 === User [userName=张三, age=26]实例2 === User [userName=张三, age=26]

接下来把实例类型改为prototype如下:

@Scope(value="prototype")

运行结果如下:

创建user实例实例1 === User [userName=张三, age=26]创建user实例实例2 === User [userName=张三, age=26]

注:这边只演示了我们常用的两种作用域,其他的大家可以下去自己试试

3,@Scope注解的使用场景


几乎90%以上的业务使用singleton单实例就可以,所以spring默认的类型也是singleton,singleton虽然保证了全局是一个实例,对性能有所提高,但是如果实例中有非静态变量时,会导致线程安全问题,共享资源的竞争

当设置为prototype时:每次连接请求,都会生成一个bean实例,也会导致一个问题,当请求数越多,性能会降低,因为创建的实例,导致GC频繁,gc时长增加

以上是今天文章的所有内容,欢迎大家吐槽

更多优质文章请关注以下公众号查阅:

转载于:https://blog.51cto.com/4247649/2118351

一分钟学会spring注解之@Scope注解相关推荐

  1. java的 import注解_[java]一分钟学会spring注解之@Import注解

    今天主要从以下几方面来介绍一下@Import注解 @Import注解是什么 @Import的三种使用方式 1,@Import注解是什么 通过导入的方式实现把实例加入springIOC容器中 2,@Im ...

  2. Spring中的@scope注解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. @Scope 简单点说就是用来指定bean的作用域作用域 (官方解释:scope用来声明IOC容器中 ...

  3. 五分钟学会 Spring Cloud Sleuth:分布式请求链路跟踪(小白必看,一看就会教程)

    Spring Cloud Sleuth:分布式请求链路跟踪 Spring Cloud Sleuth 简介 给服务添加请求链路跟踪 整合Zipkin获取及分析日志 使用Elasticsearch存储跟踪 ...

  4. 五分钟学会 Spring Boot Admin:微服务应用监控(小白必看,一看就会教程)

    Spring Boot Admin:微服务应用监控 Spring Boot Admin 简介 监控信息演示 结合注册中心使用 功能演示 添加登录认证 文末福利 Spring Boot Admin 可以 ...

  5. 【Spring注解驱动开发】使用@Scope注解设置组件的作用域

    写在前面 Spring容器中的组件默认是单例的,在Spring启动时就会实例化并初始化这些对象,将其放到Spring容器中,之后,每次获取对象时,直接从Spring容器中获取,而不再创建对象.如果每次 ...

  6. Spring系列(四):@Scope注解用法介绍

    今天给大家分享Spring中@Scope注解的用法,希望对大家能有所帮助! @Scope 定义以及作用 @Scope注解主要作用是调节Ioc容器中的作用域,在Spring IoC容器中主要有以下五种作 ...

  7. Spring @scope注解

    @scope注解使用方式: @scope("prototype") @scope注解可取值: singleton prototype request session global ...

  8. spring springboot springcloud常用注解

    @SpringBootApplication 组合注解,用在启动类上,源码: @Retention(RetentionPolicy.RUNTIME) @SpringBootConfiguration ...

  9. Spring 中的各种注解,光会用可不够哦!

    来源:https://digdeep.cnblogs.com/digdeep/p/4525567.html 1. Java中的注解 2. 使用 元注解 来自定义注解 和 处理自定义注解 3. spri ...

最新文章

  1. Learning by doing 系列文章(之一)如何在 Python 中使用 epoll ?
  2. 关于mtl_transactions_interface表序列
  3. oracle9i在windows上的dataguard配置
  4. android启动---lk入口文件crt0.s解析
  5. 获取ISAPI_Rewrite重写后的URL
  6. yabailv 运放_运放入门
  7. linux下的crontab
  8. 嵌入式实时系统的任务设计
  9. 马上就校招了,是要去实习还是复习?
  10. FastDfs之TrackerServer的详细配置介绍
  11. mysql 调用存储过程 inout_MySQL存储过程in、out和inout参数示例和总结
  12. qcom camera smmu 学习(3)
  13. 利用PLTS从F域Export出T域数据指南
  14. 投标是个技术活,不这样做要么苟且,要么狗带
  15. 计算机组成原理选择题题库
  16. ICE 3.7.4 实现客户服务端hello world
  17. 使用python embedded distribution
  18. Opencv图像处理之平滑(Smoothing)模糊(Blurring)操作
  19. “遛狗不牵绳-违法”--遛狗不牵绳识别检测 助力智慧城市犬类管理
  20. 技术支持快递第6 期

热门文章

  1. 重回大厂 996 的年轻人:还是先搞钱
  2. 高性能计时器Timer的设计(时间轮和时间堆两种方式)
  3. 【RxSwift 实践系列 2/3】thinking in Rx- Create和Drive
  4. 1.spring boot要求最低jdk1.8,平安默认1.6问题,-》安装JDK1.8 2.maven 3.3.3要求最低jdk1.7-安装jdk 1.8...
  5. 《javascript模式》 容易踩中的那些坑
  6. SpringBoot-Security-用户权限分配-配置验证规则
  7. IDEA+Maven+Springboot:invalid bound statement (not found) 解决办法
  8. 【Cocos2d-x】开发实战-Cocos中的字符串、标签和中文乱码
  9. 正式迁移博客到osc
  10. ASP.NET -- 缓存技术(1)