@scope注解,spring的scope作用

@scope注解,spring的scope作用,Spring注解@Scope原理及用法解析

本文主要介绍Spring annotation @Scope的原理及用法分析,通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友可以参考一下。

本文主要从以下几个方面介绍@Scope注释。

什么是@Scope注释?

如何使用@Scope标注?

@Scope批注的使用场景

1、什么是@Scope评论?

@Scope annotation是springIoc容器中的一个作用域,有以下作用域:基本作用域singleton(单实例)、prototype(多实例)、Web作用域(reqeust、session、globalsession)和自定义作用域。

A.singleton singleton模式——全世界只有一个实例。

B.prototype prototype模式——每次获得一个Bean,都会有一个新的实例。

C.request - request表示将为每个HTTP请求生成一个新的bean,该bean只在当前HTTP请求中有效。

D.session - session作用域意味着将为每个HTTP请求生成一个新的bean,该bean只在当前HTTP会话中有效。

E.globalsession -全局会话作用域类似于标准的HTTP会话作用域,但是它只在基于portlet的web应用程序中有意义。

2.如何使用@Scope标注?

将@Scope注释直接添加到bean对象方法中,如下所示:

/**

*定义一个bean对象

* @返回

*/

@范围

@Bean(value='user0 ',name='user0 ',initMethod='initUser ',destroyMethod='destroyUser ')

公共用户getUser(){

System.out.println(“创建用户实例”);

返回新用户('张三',26);

}

@Scope注释默认的单例实例。singleton instance的意义在于,无论你使用多少次,springIOC容器中只会有一个实例。演示如下:创建的实例只打印一次:

AnnotationConfigApplicationContext application context 2=new AnnotationConfigApplicationContext(main config . class);

user bean 2=application context 2 . get bean(user . class);

system . out . println(' instance 1===' bean 2);

user bean 3=application context 2 . get bean(user . class);

system . out . println(' instance 2===' bean 3);

创建用户实例

例1===用户[用户名=张三,年龄=26]

例2===用户[用户名=张三,年龄=26]

接下来,将实例类型更改为原型,如下所示:

@Scope(值='prototype ')

运行结果如下:

创建用户实例

例1===用户[用户名=张三,年龄=26]

创建用户实例

例2===用户[用户名=张三,年龄=26]

注意:这里只演示了两个常用的示波器,其他的可以下去自己试试。

3.@Scope批注的使用场景

几乎90%的企业可以使用singleton单实例,所以spring的默认类型也是singleton。虽然singleton保证了整个世界都是一个实例,提高了性能,但是如果实例中存在非静态变量,就会导致线程安全问题和共享资源的竞争。

设置为prototype时:每次发出连接请求时,都会生成一个bean实例,这也会导致一个问题。当请求数量增加时,性能会下降,因为创建的实例会导致频繁的gc,增加GC持续时间。

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: