技术人的开工红包来了!《华为云开春技术精选集》人手一本,速阅!>>>

1.@Scope作用?

@Scope注解用于作用域。SpringIoc中容器的作用域包含如下几种:
1.1 singleton(单例模式,默认模式):全局有且仅有一个实例
1.2 prototype(多例模式):每次获取bean的时候会生成一个新的实例
1.3 web(request、session、globalSession)
1.3.1 request:每一次HTTP请求都会产生一个新的实例,该实例仅在当前HTTP request内有效
1.3.2 session:每一次HTTP请求都会产生一个新的实例,该实例仅在当前HTTP session内有效
1.3.3 globalSession:它仅仅基于portlet中才生效
1.4 自定义作用域:

2.@Scope使用模式?

直接在bean对象方法上增加@Scope注解就行
单例模式如下

@Bean
@Scope("singleton")
public User getUser(){
	System.out.println("全局有且仅有一个实例!");
}

多例模式如下

@Bean
@Scope("prototype")
public User getUser(){
	System.out.println("每次获取bean的时候会生成一个新的实例");
}

3.@Scope使用场景?

spring中默认的类型是singleton,singleton保证了全局只有一个实例,对性能有所提高,但如果实例中使用了非静态变量时,会导致线程安全问题,共享资源的竞争问题。
当设置prototype时,每次请求都会生成一个bean实例,这会导致请求越多,bean对象越多,性能下降,甚至会导致GC暴涨。

来源:https://my.oschina.net/u/2312022/blog/4960900


码神部落- 版权声明 1、本主题所有言论和图片纯属会员个人意见,与码神部落立场无关。
2、本站所有主题由该帖子作者发表,该帖子作者爷万人跪拜码神部落享有帖子相关版权。
3、码神部落管理员和版主有权不事先通知发贴者而删除本文。
4、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者爷万人跪拜码神部落的同意。
5、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任。
6、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责。
7、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意。

最新回复 (0)
    • 码神部落
      2
        立即登录 立即注册 GitHub登录
返回
发新帖
作者最近主题: