问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spring的ioc容器可以为普通的类创建单例,它是怎么做到的呢

发布网友 发布时间:2022-04-21 01:07

我来回答

2个回答

热心网友 时间:2023-10-30 10:56

1、Bean的简介
在Spring中,那些组成应用程序的主体(backbone)及由Spring IoC容器所管理的对象,被称之为bean。 简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。 而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。
2、Bean的作用域
创建一个bean定义,其实质是用该bean定义对应的类来创建真正实例的“配方(recipe)”。把bean定义看成一个配方很有意义,它与class很类似,只根据一张“处方”就可以创建多个实例。
不仅可以控制注入到对象中的各种依赖和配置值,还可以控制该对象的作用域。这样可以灵活选择所建对象的作用域,而不必在Java Class级定义作用域。Spring Framework支持五种作用域(其中有三种只能用在基于web的Spring ApplicationContext)。
1)singleton
当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。
注意:Singleton作用域是Spring中的缺省作用域。要在XML中将bean定义成singleton,可以这样配置:
<bean id="empServiceImpl" class="cn.csdn.service.EmpServiceImpl" scope="singleton">

2)prototype
一个bean定义对应多个对象实例。Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
3)request
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效。
考虑下面bean定义:
<bean id="loginAction" class=cn.csdn.LoginAction" scope="request"/>

针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例, 且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态, 而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。 当处理请求结束,request作用域的bean实例将被销毁。

热心网友 时间:2023-10-30 10:57

1、 当一个bean的作用域为singleton, 那么Spring IoC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。注意:Singleton作用域是Spring中的缺省作用域。要在XML中将bean定义成singleton,可以这样配置: <bean id="empServiceImpl"class="cn.csdn.service.EmpServiceImpl" scope="singleton">;

2、prototype指一个bean定义对应多个对象实例。Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域;

3、request指在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext情形下有效。考虑下面bean定义:
<bean id="loginAction" class=cn.csdn.LoginAction" scope="request"/>;

4、针对每次HTTP请求,Spring容器会根据loginAction bean定义创建一个全新的LoginAction bean实例, 且该loginAction bean实例仅在当前HTTP request内有效,因此可以根据需要放心的更改所建实例的内部状态, 而其他请求中根据loginAction bean定义创建的实例,将不会看到这些特定于某个请求的状态变化。 当处理请求结束,request作用域的bean实例将被销毁。

Bean的作用域不仅可以控制注入到对象中的各种依赖和配置值,还可以控制该对象的作用域。这样可以灵活选择所建对象的作用域,而不必在Java Class级定义作用域。Spring Framework支持五种作用域其中有三种只能用在基于web的Spring ApplicationContext。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? spring的ioc容器实现原理,为什么可以通过byname和bytype找到bean spring ioc容器指的是什么 IOC容器是什么? spring ioc实现原理 java编程,spring里ioc和aop用什么原理实现的 spring ioc是怎么实现的 IOC容器是什么 一嗨租车芝麻信用多少可以免押金 qq身份证 QQ可以更换身份证 qq身份证设置有什么用 QQ身份证有什么用处 QQ身份证是干啥用的 qq身份证格式怎么写? 小米6不能快速充电了,是什么原因? 小米4s为什么网速慢没有别的手机上网快 为什么小米4充电速度感觉没原来快了。。。。 小米6亮屏充电没快冲吗 小米3的Wifi网速没有小米2快,为什么? 小米5不快速充电了是怎么回事? IOC容器到底是什么解决方法 什么是IoC以及理解为什么要使用Ioc Spring框架如何实现ioc的?能详细解释一下内部机制么 什么是IOC,什么时候用IOC ? 什么是IOC,IOC的优缺点及IOC的应用 IOC究竟有什么存在意义 需要设计一个类似IOC容器类 大型.net网站使用什么ioc容器 win7 计算机 分组依据 spring的ioc和aop都是什么?? spring的ioc注入方式有几种 如何给 TP3.1 用上 IoC 容器 芝麻信用 一嗨租车,预授权了双免,如果违法扣分,会影响到芝麻信用分吗? 生肖属鼠的年份有哪些? 十二生肖中,鼠为什么排在第一呢,有什么依据? 子鼠是什么生肖 十二生肖中鼠的性格特点是怎么样的? 十二生肖鼠的来历 十二生肖鼠应该排列第几位? 十二生肖鼠为什么排第一?