spring 对象创建单例、多实例应用场景

spring配置文件或注解中可以设置对象为singleton(单例)或 prototype(多实例)
单例即希望全程使用的对象,常驻内存,常常使用,属性和方法返回值一般不会修改只用于获取;
多实例用于每次调用的返回值和属性值皆会发生变化如传输对象DTO这类天然需要传值并且每次都可能不同的对象实例;

应用场景说明:
多实例:值得一提的是在mvc的框架中使用以往的写法就是action、bo、dao中各自new下一层的对象在类中使用,这里的对象就是多实例的表现,在没有IOC的管理下,这类实例一般直接交给jvm清理,容易出现各种问题;通过bean的生命周期管理,可以更明确地处理这些层层依赖的对象,所以学好IOC是解耦和梳理对象实例的必要过程。
单实例:配置实例:这应该可以覆盖所有单例应用场景,包括 项目使用的字典翻译常量信息、各种数据源连接信息(配合读取配置文件使用)、项目文件目录信息、其他内外部工具类(不包括静态工具类)、统一资源处理类(计数器、资源管理类)、多线程线程池(线程资源统一)等

总结:
多实例的使用场景需要符合业务并行无影响的原则,保证共享数据的时效性并且多条相同业务之间无影响就使用多实例;单实例应用场景其实只有一个,就是保证共享资源的唯一性,如果需要资源共享且共享时刻所有数据需要统一即可使用单例,也可以用强一致性来保证单例但是会牺牲时间,这在非关系型数据库中有所体现。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容