-
spring可以配置多例对象么
答:可以。spring中bean可以被定义为两个模式:单例和多例
-
单例:只有一个共享实例的存在,所有对这个bean的请求都会返回这个唯一的实例。不管new多少次。即所有请求都有一个对象来处理
-
多例:对这个bean的每次请求都会创建一个新的bean实例,类似于new。
-
-
什么时候用单例?什么时候用多例?
答:当对象含有可改变状态时(在实际应用中该状态会改变),则多例,否则单例。例如dao和service层的数据一般不会有响应的属性改变,所以考虑单例,而controller层会存储很多需要操作的vo类,此时这个对象的状态就会被改变,则需要使用多例
-
如何配置多例?
答:在bean时,加一个scope = “singleton”;如果不写个默认是true,也就是单例的,写了就是多例的
-
spring的bean为什么是单例的?
答:为了提高性能。
-
由于不会每次都新创建新对象,所以就减少了新生成实例的消耗。因为spring会通过反射或者cglib来生成bean实例这都是耗性能的操作,其次给对象分配内存也会涉及复杂算法。
-
减少JVM垃圾回收,由于不会给每个请求都新生成bean实例,所以自然回收的对象少了。
-
可以快速获取到bean,因为单例的获取bean操作除了第一次生成之外其余的都是从缓存里获取的所以很快。
-
缺点就是在并发环境下可能会出现线程安全问题
-