Spring中的多例往单例里注入的方法

申明:本文已迁移到百家号http://baijiahao.baidu.com/builder/preview/s?id=1641275124389585515,欢迎移步

spring 的bean默认是单例,这个用spring的人基本都知道。

如果需要多个实例,又要使用ioc怎么办呢?

当然是使用@Scope注解,指明ConfigurableBeanFactory.SCOPE_PROTOTYPE了。

  /** 
 * Scope identifier for the standard singleton scope: "singleton". 
 * Custom scopes can be added via {@code registerScope}. 
 * @see #registerScope 
 */  
String SCOPE_SINGLETON = "singleton";  

/** 
 * Scope identifier for the standard prototype scope: "prototype". 
 * Custom scopes can be added via {@code registerScope}. 
 * @see #registerScope 
 */  
String SCOPE_PROTOTYPE = "prototype";  

但是在使用过程中发现这样依然是单例。

如果给一个组件加上

@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)  

每次请求它的实例,spring的确会给返回一个新的。问题是这个多例对象是被其他单例服务依赖的。

而单例服务初始化的时候,多例对象就已经被创建好了。当你去使用单例服务的时候,多例对象也不会被再次创建了。

那怎么解决呢?

本文已迁移到百家号http://baijiahao.baidu.com/builder/preview/s?id=1641275124389585515,欢迎移步

总结
我倾向于使用第3和第5种方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,997评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,974评论 6 342
  • 1.1 spring IoC容器和beans的简介 Spring 框架的最核心基础的功能是IoC(控制反转)容器,...
    simoscode阅读 6,753评论 2 22
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,595评论 1 92
  • “诶,怎样才能知道男朋友爱我?” “你几个小时不理他试试。” “他会以为我在忙。” “那就一天不理他。” 突然玩失...
    蠢小妖viviwen阅读 532评论 0 2