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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。