-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ioc依赖注入问题 #238
Comments
之前考虑过实现多实例,保留了一个字段,一直没想到场景。 所以如果希望得到这个功能,需要给出一个充分的理由让所有的使用者、或大部分使用者受益,Blade 是愿意变得更好的 : ) |
@biezhi 个人感觉还是有一定的使用场景,或许不是很场景。最近在做一个内部的框架,其中就使用到了容器内bean的多实例。但是这个多实例并不是每次请求都会创建的。会根据外部的配置参数,实例化一个bean,并根据外部的参数来进行初始化该bean。为了简化整个框架的使用,需要将动态创建的bean放置在容器中。这就需要保证该容器要兼容多实例的场景。 |
从性能考虑单例确实最优,spring默认也是单例。我是看到该字段没有使用所以问下,对于每次实例化的场景并不多。只是遇到服务层统计类似投票或评论数时, |
@ccqy66 如果配置在外部,事情就变得不简单了。如果 Blade 要做这个功能我觉得最好的方式还是在原有的注入注解上添加一个配置,再复杂的场景我认为可能不属于 |
@jetablezhu 提到的 |
@biezhi 全局单例有很大的局限性,在依赖树的末端很难获得新的实例,使得执行一个并行任务变得十分困难。类似Java这种类型的语言,最大的优势就是高度灵活可扩展,Java的反射能力是Go望尘莫及的,但是Go的性能也是Java无论怎么优化都赶不上的。所以单例带来的少许性能提升意义并不是很大,不如每次请求都有新实例来的方便灵活。至少实例化对象的那一点点开销是完全可以接受的。 |
@standardcore 单例的局限性和它的优势是并存的,对于一个开发新手而言满项目乱创建对象造成的后果可能自己也无法解决,Java 语言和 Go 性能这事儿应该在并发层面比较为好,内存层面需要一些数据支撑。 按照各位以上的讨论,作为框架支持多例即可,默认情况下对象是单实例的,在想要多例的对象在注解上配置 |
hello,我看到源码中Ioc对bean的管理都是单例,static void injection(Ioc ioc, BeanDefine beanDefine)也是从容器中将已生成的实例注入目标字段,那就是说所有bean的字段都是单例的,那么BeanDefine中isSingle字段的意义是?如果需要每个请求一个实例bean,能支持么?
The text was updated successfully, but these errors were encountered: