java - 自定义 Spring 范围?

标签 java spring

有谁知道除 Servlet Context Scope 之外的任何其他自定义 Spring 范围和 ThreadScope

如果您制作了一些闭源自定义示波器,我真的很想听听它的作用以及它如何为您工作。 (我想有人会在桌面应用程序中制作 WindowScope 吗?)

我对所有用例持开放态度,我希望在这里扩展我的视野。

最佳答案

我们实现了自己的自定义 Spring 作用域。我们的很多代码都在相对较低的级别上工作,接近数据库,我们在其之上维护一个概念级别,它有自己的数据源、链接、属性等对象模型。

无论如何,很多 bean 需要一个所谓的 StorageDictionary(此对象图的封装)来完成它们的工作。当我们对对象图进行重大更改时,有时需要清除并重新创建字典。因此,我们为字典范围的对象实现了一个自定义范围,并且给定字典的部分无效涉及清除此自定义范围。这让 Spring 可以为这些对象处理一种很好的自动缓存形式。在字典失效之前,您每次都会得到相同的对象,此时您会得到一个新对象。

这不仅有助于一致性,而且还允许对象本身缓存对字典中实体的引用,只要 Spring 可以检索到缓存,缓存就会一直有效。这反过来又让我们将它们构建为不可变对象(immutable对象)(只要它们可以通过构造函数注入(inject)连接),无论如何,只要有可能,这都是一件非常好的事情。

这种技术不会在任何地方都有效,并且在很大程度上取决于软件的特性(例如,如果字典被定期修改,这将是非常低效的,如果它从不更新,这将是不必要的,并且比直接更新效率稍低使用权)。但是,它确实帮助我们以一种概念上简单明了且在我看来非常优雅的方式将这种生命周期管理传递给了 Spring。

关于java - 自定义 Spring 范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/450557/

相关文章:

spring - war 、 Spring 和 Tomcat 7

c# - 如何构建软件框架

java - int和string的类型转换,java

java - 是否可以流式传输嵌套 Json 列表?

java - 无法从 Eclipse 中的单独项目获取 Json 文件

Java 错误 TaskUtils$LoggingErrorHandler :95 - Unexpected error occurred in scheduled task

java - 应用启动Spring Boot失败

java - 如何在线程关闭时得到通知?

java - 如何在 Spring 中处理 "org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error"?

java - SpEL - 禁用短路评估