Spring中的Bean为什么默认是单例的?有什么缺点吗?
一句话就是为了提高性能,具体点:
第一、由于不会每次都新创建新对象,所以就减少了新生成实例的消耗。因为spring会通过反射或者cglib来生成bean实例这都是耗性能的操作,其次给对象分配内存也会涉及复杂算法。
第二、减少JVM垃圾回收,由于不会给每个请求都新生成bean实例,所以自然回收的对象少了。
第三、可以快速获取到bean,因为单例的获取bean操作除了第一次生成之外其余的都是从缓存里获取的所以很快。
缺点就是在并发环境下可能会出现线程安全问题。