TechRoad_OOD

目标:设计及开发高质量水准的Obejct


1. Spring 对象的实例化模式

默认时单例模式,其使用场景和时机:

1.没有状态的共享对象. 没有状态就不需要同步,所以每次依赖对象需要该对象进行一些处理时,无需创建新实例

2. 具有只读状态的共享对象. 只读不会改变状态,因此无需创建新实例

3.具有共享状态的共享对象。如果有一个必须共享状态的bean,那么单例是最理想的选择,要确保状态写入同步尽可能细化。

4.具有可写状态的高通量对象(hign-htroughput) 对象。 要做权衡。一个bean被大量使用。 1. 不断创建数百个bean实例的成本,2.使用一个单例并保持对该bean状态的所有写访问同步时的性能(精细同步,保持一致性)所需的成本.  如果少量的写状态,或者实例化代价更大。

5.具有可写状态的对象。如果一个拥有大量写状态的对象。会发现保持同步所需的成本远大于创建新实例以处理来自依赖对象的每个请求的成本。

6.具有私有状态的对象;某些依赖对象需要具有私有状态的bean.以便它们可以与依赖于该bean的其他对象分开。此时必须使用非单例。

作用域

1. 单例作用域:默认单例,每个Spring IoC容器只会创建一个对象。

2.原型作用域:Spring创建新实例

3.请求作用域:用于web 应用程序。当为Web app使用Spring MVC 时,首先针对每个HTTP 请求实例化带有请求作用域的bean,在请求完成时销毁.

4.会话作用域:用于 web app, Srping MVC 首先针对每个HTTP会话实例化带有会话作用域的bean,然后再会话结束时销毁。

5.全局会话作用域:用于基于Portlet 的Web应用程序。 带有全局会话作用域的bean可以在同一个Spring MVC驱动的门户应用程序的所有Portlet之间共享。

6.线程作用域:当一个新线程请求bean实例时,Spring将创建一个新的bean实例,而对于同一个线程,返回相同的bean实例。默认未注册。

7.自定义作用域: 实现 beans.factory.config.Scope 接口创建自定义作用域,并在Spring配置中注册定义作用域.

 

posted @ 2020-12-05 14:41  君子之行  阅读(33)  评论(0)    收藏  举报