bean的运用域,如何定义bean的作用域

  bean的运用域,如何定义bean的作用域

  这篇文章给你带来了一些关于java的知识。由于Spring框架是管理bean的IoC容器,bean自然是Spring中的重要资源。bean的作用域是什么意思?有多少种类型?让我们来看看吧。希望对大家有帮助。

  如何解决写爬虫IP受阻的问题?立即使用。

  由于Spring框架是管理bean的IoC容器,bean自然是Spring中的重要资源。豆子的范围是什么?有多少种类型?接下来我们就来看看。

  PS:Java中的公共类可以叫做Bean或者Java Bean。

  

1.作用域

   Bean的范围是指Spring整个框架中Bean的某种行为模式。例如,singleton singleton范围意味着整个Spring中只有一个Bean,并且是全局共享的。当有人修改这个值时,另一个人会读取修改后的值。

  比如我们在Spring中定义一个singleton Bean对象用户(默认范围是singleton),具体实现代码如下:

  @组件

  公共类UserBean {

  @Bean

  公共用户user() {

  User User=new User();

  user . setid(1);

  user . set name(“Java”);//这个行为的重点:用户名叫Java

  返回用户;

  }

  }然后在A类中使用并修改用户对象,具体实现代码如下:

  @控制器

  公共类控制器{

  @自动连线

  私人用户User;

  公共用户getUser() {

  用户user=用户;

  user . set name( MySQL );//此行为的焦点:用户名已被修改。

  返回用户;

  }

  }最后,在B类中也使用了user对象,具体实现代码如下:

  @控制器

  公共类控制器{

  @自动连线

  私有用户User;

  公共用户getUser() {

  用户user=用户;

  返回用户;

  }

  }这时,当我们访问B对象中的getUser方法时,会发现此时的用户名是A类中修改后的“MySQL”,而不是原来的“Java”,也就是说Bean对象User默认是singleton的作用域。如果这个单例对象在任何地方被修改,那么当其他类再次调用时,它们将得到一个修改后的值。

  

2.作用域分类

  在Spring中,Bean有五个常见的作用域:

  单例:单例范围;原型:原型范围(多实例范围);请求:请求范围;会话:会话范围;应用:全球范围。注意:后 3 种作用域,只适用于 Spring MVC 框架。

  

2.1 singleton

  官方说明:(默认)将单个bean定义的范围限定为每个spring IOC容器的单个对象实例。

  描述:IoC容器中该作用域内只有一个Bean的实例:获取Bean(即通过applicationContext.getBean等方法获取)和组装Bean(即通过@Autowired注入)都是同一个对象。

  场景:通常,无状态Bean使用这个作用域。表示无状态Bean对象的属性状态不需要更新。

  备注:Spring 默认选择该作用域。

  

2.2 prototype

  官方说明:将单个bean定义的范围限定为任意数量的对象实例。

  描述:此范围内的每个Bean请求都将创建一个新实例:get Bean(即通过applicationContext.getBean等方法获得)和assemble Bean(即由@Autowired注入)都是新的对象实例。

  场景:通常,有状态Bean使用这个作用域。

  

2.3 request

  官方注释:将单个bean定义的范围限定为单个http请求的生命周期。也就是说,每个HTTP请求都有自己的bean实例,该实例是在单个bean定义的基础上创建的。仅在web感知的Spring ApplicationContext的上下文中有效。

  描述:每个Http请求都会创建一个新的Bean实例,类似于prototype。

  场景:Http请求和响应的共享Bean。

  备注:仅限于在Spring MVC框架中使用。

  

2.4 session

  官方说明:将单个bean定义的范围限定为http会话的生命周期。仅在web感知的spring应用程序上下文中有效。

  描述:在Http会话中,定义一个Bean实例。

  场景:用户会话的共享Bean,例如:记录一个用户的登录信息。

  备注:仅限于在Spring MVC框架中使用。

  

2.5 application

  官方注释:将单个bean定义的范围限定为servlet上下文的生命周期。仅在web感知的spring应用程序上下文中有效。

  描述:在Http Servlet上下文中,定义一个Bean实例。

  场景:Web应用的上下文信息,比如记录一个应用的分享信息。

  备注:仅限于在Spring MVC框架中使用。

  

3.作用域设置

  我们可以通过@Scope注释设置Bean的作用域。可以通过以下两种方式进行设置:

  直接设置作用域的具体值,比如:@ scope( prototype );

  设置ConfigurableBeanFactory和WebApplicationContext提供的SCOPE_XXX变量,比如@ SCOPE(Configurable bean factory . SCOPE _ prototype)。

  具体设置代码如下:

  Bean的范围是指Spring的整个框架中Bean的某个行为模式。Bean共有五个作用域:singleton(单例作用域)、prototype(原型作用域)、request(请求作用域)、session(请求作用域)和application(全局作用域)。注意,后三个范围只适用于Spring MVC框架。

  推荐:《java视频教程》是Java详细分析的Bean作用域的详细内容。更多请关注我们的其他相关文章!

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

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