78%Javaプログラマは、Spring Beanの面の質問を混乱させる

身近な友人のすべてが春は5つのスコープを提供することを知っている春の開発者は、シングルトン、プロトタイプ、要求、セッション、あるグローバルセッション。
下の図は、興味を持って友人が中に入ると、それぞれ5異なっているかを見ることができ、公式文書のスクリーンショットです。今日では、これらの5つの最初の二つを導入し、また、元々設けられたバネ豆スコープシングルトンとプロトタイプです。
春の公式文書には、次の図について説明します。78%Javaプログラマは、Spring Beanの面の質問を混乱させる

豆にシングルトンとプロトタイプビーン差

唯一容器スプリングビーンでインスタンス複数の要求を扱う場合、単一の実施形態は、後続の要求は、共通オブジェクトである場合にBeanが宣言されている場合、オブジェクトは、内部マップに格納されます。キャッシュへの要求が何も表示がない(マップ)、このオブジェクトの任意の直接の使用を開始する時期ではない、新しいオブジェクトをインスタンス化する前に、これはシングルトンである場合。しかし、プロトタイプ(試作品)Beanの各要求は、新しいダイレクト豆、キャッシュおよびプロセスの調査からノーキャッシュをインスタンス化するときです。
1.ペイント分析
78%Javaプログラマは、Spring Beanの面の質問を混乱させる

78%Javaプログラマは、Spring Beanの面の質問を混乱させる

2.源解析は、
最初に単一の実施形態を決定するか、プロトタイプは、Beanを生成さ
78%Javaプログラマは、Spring Beanの面の質問を混乱させる

キャッシュから取得する最初の試みの一つのケースは、新しい創造である場合
78%Javaプログラマは、Spring Beanの面の質問を混乱させる

結論:
豆シングルトンそれは頻繁にオブジェクトを作成しませんので、それは、Beanを再利用します後ろに新しいBeanを作成するだけで最初。
新しく作成された豆のプロトタイプ毎回

シングルトン豆の利点

由于不会每次都新创建新对象所以有一下几个性能上的优势:
1.减少了新生成实例的消耗
新生成实例消耗包括两方面,第一,spring会通过反射或者cglib来生成bean实例这都是耗性能的操作,其次给对象分配内存也会涉及复杂算法。
2.减少jvm垃圾回收
由于不会给每个请求都新生成bean实例,所以自然回收的对象少了。
3.可以快速获取到bean
因为单例的获取bean操作除了第一次生成之外其余的都是从缓存里获取的所以很快。

单例bean的劣势

单例的bean一个很大的劣势就是他不能做到线程安全!!!,由于所有请求都共享一个bean实例,所以这个bean要是有状态的一个bean的话可能在并发场景下出现问题,而原型的bean则不会有这样问题(但也有例外,比如他被单例bean依赖),因为给每个请求都新创建实例。关于这方面我正在准备写一篇文章,在整理当中,感兴趣的朋友可以关注我,我后续写一篇详细的文章。

总结

Spring 为啥把bean默认设计成单例?
答案:为了提高性能!!!从几个方面,
少创建实例
垃圾回收
缓存快速获取

单例有啥劣势?
如果是有状态的话在并发环境下线程不安全。
78%Javaプログラマは、Spring Beanの面の質問を混乱させる

最后大家看一下,这20道关于Spring的面试题你会几道?
1 、什么是 Spring 框架?Spring 框架有哪些主要模块?
2 、使用 Spring 框架能带来哪些好处?
3 、什么是控制反转(IOC) ?什么是依赖注入?
4 、请解释下 Spring 框架中的 IoC ?
5 、BeanFactory 和 和 ApplicationContext 有什么区别?
6 、Spring 有几种配置方式?
7 、如何用基于 XML 配置的方式配置 Spring ?
8 、如何用基于 Java 配置的方式配置 Spring ?
9 、怎样用注解的方式配置 Spring ?
10 、请解释 Spring Bean 的生命周期?
11 、Spring Bean 的作用域之间有什么区别?
12 、什么是 Spring inner beans ?
13 、Spring 框架中的单例 Beans 是线程安全的么?
14 、请举例说明如何在 Spring 中注入一个 Java Collection ?
15 、如何向 Spring Bean 中注入一个 Java.util.Properties ?
16 、请解释 Spring Bean 的自动装配?
17 、请解释自动装配模式的区别?
18 、构造方法注入和设值注入有什么区别?
19 、Spring 框架中有哪些不同类型的事件?
20 、Spring 框架中都用到了哪些设计模式?

欢迎大家一起交流,喜欢文章记得点个赞哟,感谢支持!

おすすめ

転載: blog.51cto.com/14442094/2427865