问题标签 [custom-scope]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
186 浏览

phpstorm - 如何在 PhpStorm 中使用共享范围

正如 PhpStorm 提到的,我们可以创建两种类型的范围:本地和共享。

如何为多个开发人员使用共享范围?

0 投票
1 回答
151 浏览

ruby-on-rails - 具有范围的 Active Admin 索引导致 NoMemoryError:分配内存失败

使用 Rails 4.2.6,我有一个自定义范围的用户模型。这是我的模型/user.rb:

我正在尝试使用 Active Admin 显示所有 active_customers 的索引,这是我的 admin/customer.rb:

它在本地和暂存中工作,但在生产服务器中崩溃。

我已经为所有患者建立了一个索引,该索引在每个环境中都能完美运行。这是管理员/患者.rb:

生产中的日志不显示 SQL 查询的任何跟踪,因为它似乎之前中断:

检查 rake 路由的结果后,我可以看到“管理员/客户”没有路由,但它在本地也没有中断,也没有登台服务器。关于为什么会发生的任何线索?

在我的 routes.rb 我有:

在分期中,我们有:

在生产中:

因此,尽管环境之间的数字差异我不认为生产中内存错误的原因是用户数量。

还尝试在 customer.rb 中使用在 patient.rb 中工作的范围,但它崩溃了:

之后我尝试将 as:"Customer" 更改为 as:"User" 并再次崩溃:

如果在 patient.rb 中工作的范围在 customer.rb 中不起作用,这让我放弃了问题只是因为内存不足而引起的想法。很确定问题与我在活动管理员中使用范围的方式或我在 customer.rb 中的语法有关,但我不知道如何解决它。

0 投票
1 回答
2368 浏览

java - Spring 自定义范围生命周期 Bean 终止

问题:我如何告诉 Spring 一组具有自定义范围的 bean 都应该被视为垃圾,以便同一线程上的下一个请求不会重用它们的状态?

我所做的:我在 Spring 中实现了一个自定义范围,以模拟请求范围 (HttpRequest) 的生命周期,但用于 TcpRequests。它与这里发现的非常相似。

我发现的自定义范围的许多示例是原型或单例的变体,没有显式终止 bean,或者,它们基于本地线程或 ThreadScope,但它们没有描述告诉 Spring 生命周期已经结束并且所有豆类应该被销毁。

我尝试过的事情(可能不正确):

  • Event + Listener 指示范围的开始和结束(这些发生在收到消息时和发送响应之前);在侦听器中,显式清除了范围,从而清除了线程本地实现(scope.clear())使用的整个映射。在测试中手动处理时,清除范围确实会导致对 context.getBean() 的下一次调用返回一个新实例,但是在单例类中自动装配的我的 bean 没有获得新的 bean——它一遍又一遍地使用同一个 bean .

  • 实现的监听器:BeanFactoryPostProcessor、BeanPostProcessor、BeanFactoryAware、DisposableBean 并尝试在所有 Disposable bean 实例上调用 destroy();像这样的东西,但仅适用于我的自定义范围。这似乎失败了,尽管我在收到范围结束事件时调用了 customScope.clear() ,但没有任何东西明确结束 bean 的生命周期;结束范围似乎并不意味着“结束与此范围关联的所有 bean”。

  • 我已经广泛阅读了 Spring 文档,似乎很清楚 Spring 不管理这些自定义 bean 的生命周期,因为它不知道何时或如何销毁它们,这意味着必须告诉它何时以及如何销毁摧毁他们;我试图阅读和理解 Spring 提供的 Session 和 Request 范围,以便我可以模仿这一点,但遗漏了一些东西(同样,这些对我来说不可用,因为这不是一个支持 Web 的应用程序,而且我不是使用 HttpRequests,这是对我们应用程序结构的重大更改)

有没有人能指出我正确的方向?

我有以下代码示例:

XML 上下文配置

TransactionController(处理请求)

TcpRequestScope(范围定义)

TcpRequestCompleteListener

RequestWrapper(我们在整个请求生命周期中使用的对象)

0 投票
1 回答
162 浏览

android - 一个对象,如果注入到同一自定义范围下的 2 个子组件中,则每次创建该对象的新实例时

一个对象如果注入到相同自定义范围下的 2 个子组件中,则每次创建该对象的新实例时。我希望将相同的实例传递给所有子组件

这是模块

这些是我的子组件

这些子组件写在 ActivityBindingModule 中,它被添加到我的应用程序组件中。现在我想要两个子组件中的 PublishSubject 对象的相同实例,我对匕首相当陌生,我想知道我做错了什么?

0 投票
0 回答
138 浏览

java - Intellij 理念。如何制作自定义范围模式以隐藏类文件但显示库文件夹?

我为外部程序编写软件并启动它。该程序为每个java文件在项目文件夹中生成类文件(它只是编译它并做一些工作,这个想法由于某些原因不能做)。目前我有大约 60 个课程,很难查看我所有的源代码文件。所以我找到了解决方案 - 想法范围。我得到了范围并隐藏了一个未使用的文件,但模式对我来说并不明确。我的模式忽略了 lib 文件夹。

到目前为止我的模式: lib:*..*||!file:*.class

它隐藏库文件夹。有没有办法显示库文件夹但隐藏项目代码中的所有特定文件?

0 投票
1 回答
20 浏览

xtext - Xtext CustomScopeProvider 添加候选者的问题

我正在开发一个 xtext 项目,我必须在其中自定义范围提供程序。我需要为范围添加一些可能的候选人。第一部分(getServiceInputs())工作正常,但第二部分(addAll(sub.GetSubRecipeParameters())不行。调试表明它们已从其原始源(sub)中删除,因此无法再次检索。当简单评论时在 addAll 行中,SubRecipeParameters 保留在 sub 中。真的不知道如何解决这个问题,已经尝试了一些解决方法。任何有想法的人?

谢谢你的帮助!!

0 投票
0 回答
10 浏览

spring-boot - 如何在春季实现通用的、非严格的 http“RequestScope”-like 范围?

我需要实现通用的 RequestScope,它不仅适用于 http 请求,适用于 http 请求。将其视为应用程序任意入口点的通用 RequestScope。Webservice、kafka、rest、JMS 等等。Tbh 我真的很惊讶,这并不以现成的方式存在。可悲的是,即使经过大量阅读,我也没有从任何地方得到任何答案,我可能缺乏一些基本的弹簧知识。

这个任务原则上是微不足道的。由于请求处理(在考虑的情况下)与单线程有关,我们需要做的就是使用 ThreadLocal,并有一些地方放置初始化和销毁​​逻辑。但我完全在努力寻找任何非极其简单的示例/文档如何在春季执行此操作。有人可以参考我的任何来源或提供示例吗?

但要启动一些解决方案。我想说一个名为“线程”的范围,并且能够使用这个范围注入服务。本质上,我只想在此服务上调用一个方法来获取有关“条目”的信息,对于相同的“条目”,这应该保持不变。好的,让我们创建和注册名为“线程”的自定义范围:

以免将其用于我们的服务:

SimpleThreadScope不支持 bean 销毁,所以我们可以使用 [1] 或 [2],由于某种原因未包含在 spring 中(票证中未记录,他们只是引用了 javadoc)。但是我们的用例不需要任何销毁逻辑,所以我们可以这样做,因为 ThreadScopedSomething 中保存的最小状态将被覆盖。好的,所以这会为每个线程创建 bean,通常在线程池中,所以在一段时间之后,我们将为每个线程创建 bean,它会停在那里。所以我们需要为每个入口点添加一些逻辑来执行初始化/销毁逻辑。休息,所有消息传递等。让我们讨论休息,说卡夫卡似乎更容易做到。我看到提到,这很容易做到@ControllerAdvice,但没有提及如何,所有文档/示例都围绕日志记录,没有建议如何将其应用于更通用的用例。所以我只能想出WebMvcConfigurer

并覆盖preHandle并且afterCompletion将在自动装配的线程范围实例上调用init和。每个入口点都必须这样做。resetThreadScopedSomething

似乎正在工作。看起来丑陋和骇人听闻的方法。有人可以批评提供更好的解决方案/方法吗?这是如何正确完成的?

[1] https://github.com/jyore/spring-scopes [2] https://github.com/devbury/spring-boot-starter-threadscope

0 投票
1 回答
43 浏览

android - 模块中的非范围绑定与 Dagger 中的构造函数注入绑定

我在 appModule 中有一个无范围的绑定,并且与使用 Singleton 范围注入的构造函数相同的类。当我在 appComponent 中为 Foo 添加声明时,生成的代码在没有任何即非作用域绑定的情况下拾取模块绑定,而DoubleCheck不是构造函数注入的 Singleton 绑定,为什么会这样?