❤ 面试题
Spring Bean的作用域之间有什么区别?
❤ bean 的作用域

一、代码示例 singleton

1、bean.xml 不设置作用域。
首次执行空方法 testBook ,内部未调用 getBean。
结果如下:
- 调用了 Book 的无参构造器。
说明 IOC 容器对象一创建,就创建了 Book 对象。


2、bean.xml 设置作用域为 singleton
首次执行方法 testBook,方法内部调用两次 getBean 方法。
结果如下:
- (1) 调用了 Book 的无参构造器;
- (2) 对比两个引用,结果为 true,说明两个引用指向的是同一个对象。


3、小结 singleton
- 如果不指定 Spring Bean 的作用域,则默认 singleton。
- 如果 Spring Bean 的作用域为 singleton,则
- IOC 容器对象一创建,就创建 Bean 实例。
- Bean 以单实例的方式存在
- IOC 容器对象一创建,就创建 Bean 实例。
二、代码示例 prototype
1、bean.xml 设置作用域为 prototype

2、首次执行空方法 testBook
- 结果:并没有调用了 Book 的无参构造器!
- 说明:IOC 容器对象一创建,并没有 Book 对象。

3、首次非空执行方法 testBook ,其中调用两次 getBean,返回两个对象引用。

☀** **课堂小测
- Spring Bean的作用域之间有什么区别?
