问题标签 [picocontainer]

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 投票
3 回答
711 浏览

java - 如何使用 PicoContainer 管理动态依赖项?

假设我有两个班级 A 和 B,其中 B 取决于 A。

在单个 PicoContainer 中解析 B 很容易。

但我想B为不同的会话提供不同的实例,并使用A. 我正在考虑这样的事情。

上面的代码不起作用,因为当请求sessiona时,B它会向父容器root请求它。 B在那里找到,但只在内部root和它的父母中解决,导致UnsatisfiableDependenciesException.

有什么好的方法可以使这项工作吗?或者这是一种反模式,我以错误的方式解决问题?

0 投票
1 回答
411 浏览

java - 从 Waffle/Pico 转换为 Struts2/Guice

我的任务是将我自己在 Waffle 框架中使用 PicoContainer 作为 DI 机制开发的应用程序转换为我们的新“堆栈”,即使用 Struts2 作为框架,Guice 作为 DI 机制。关于如何以最小的痛苦做到这一点,同时从新框架和 DI 机制中获得最佳效果,有没有人有任何有用的指示?

提前谢谢了。

0 投票
1 回答
585 浏览

java - 如何在依赖注入框架(PicoContainer)中注册装饰对象?

我想用一个 JobEnabledDecorator 对象来包装一些实现 Job 接口的类,该对象确定它是否执行。

我无法弄清楚如何在 PicoContainer 中配置它,以便它知道使用包装它们的 JobEnabledDecorator 创建 Job 实现对象。

这在依赖注入框架中可能吗?

在 PicoContainer 中可以吗?

如果是这样,任何帮助将不胜感激。

0 投票
6 回答
33165 浏览

java - Google Guice 与 PicoContainer 的依赖注入

我的团队正在研究依赖注入框架,并试图在使用 Google-Guice 和 PicoContainer 之间做出决定。

我们正在我们的框架中寻找几件事:

  1. 一个小的代码足迹 - 我所说的一个小的代码足迹是我们不希望在我们的代码库中到处都是依赖注入代码。如果我们需要在未来进行重构,我们希望它尽可能简单。
  2. 性能 - 每个框架在创建和注入对象时有多少开销?
  3. 易于使用 - 是否有很大的学习曲线?我们是否必须编写大量代码才能使一些简单的工作正常工作?我们希望配置尽可能少。
  4. 社区规模 - 较大的社区通常意味着项目将继续维护。我们不想使用框架并且必须修复我们自己的错误;)此外,我们在此过程中遇到的任何问题都可以(希望)由框架的开发人员/用户社区回答。

将不胜感激将两个框架与所列标准进行比较。任何有助于比较两者的个人经历也将非常有帮助。

免责声明:我对依赖注入相当陌生,所以如果我问了一个与本次讨论无关的问题,请原谅我的菜鸟。

0 投票
2 回答
306 浏览

java - 控制 PicoContainer 的启动顺序

我的任务是对我们如何启动应用程序进行一些重构工作。基本上,我们有一堆控制台应用程序,它们依赖于 GUI 应用程序启动代码,导致虚假依赖项,这些依赖项对我们需要发布哪些库以及其他模块需要声明哪些依赖项具有启动效应。

所以我编写了一个简单的启动框架,我基本上只是将一堆 Runnable 对象放入一个列表中,然后按顺序运行它们 - 它可以工作。

但我在想——我们的项目中已经有了 PicoContainer,所以所有这些需要在启动时运行的东西都可能被扔到 PicoContainer 中,如果他们实现了 Startable,他们就会开始......

但在某些情况下,我们希望指定它们之间的顺序。例如,在我们将标头写入日志以指示应用程序正在启动之前,我不希望任何其他组件写入日志。我知道我可以通过引入注入依赖项来引入排序,但在这种情况下这感觉就像是一个 hack - 我需要添加日志头编写器作为可能写入日志的所有其他组件的依赖项,这不是很好全部。

尽管如此,控制 PicoContainer 启动的顺序似乎还是不错的,那么可能还有其他方法吗?

或者,我可以保持简单并坚持我的 Runnable 列表。毕竟,它确实有效。

0 投票
1 回答
88 浏览

java - 通过方法面临对象创建时出现自动布线问题

我正在使用PicoContainer来连接我的应用程序的类。正如您在下面看到的,一切都很完美,但在一个地方:

问题线是

有没有办法使用 PicoContainer 解决这个问题?如果可能的话,我想保持我的课程没有注释。

谢谢

0 投票
4 回答
686 浏览

spring - 实现驱动和依赖注入的好处与维护实现的成本

我正在启动一个我想快速构建的应用程序,稍后将由 20 多个开发人员开发。

在有多个开发人员的环境中了解您对 DI 的了解后,您是否会使用 DI 来开发您想要相对快速构建的新应用程序?

对我来说,现在使用 DI 的成本将是编写和生成的代码行,而不是不为每个对象使用接口。最后,我希望 DI 不会因为反射而成为性能问题。

0 投票
1 回答
440 浏览

java - PicoContainer 缓存可以是线程安全的吗?

花了很多时间试图弄清楚这里发生了什么,但我想我终于找到了一些东西。

我们有一些相当正常的 PicoContainer 代码,它们只是打开缓存,我认为这应该会导致单例行为:

然而,正如我们今天发现的那样,我们有一个组件显然不是一次构建,而是四次。这不是我可以在我自己的计算机上复制的东西,只能在其他一些开发人员机器上复制。

我们进一步调查,结果发现多个线程同时访问 PicoContainer 以查找相同的组件,而不是实例化一个副本并让其他三个线程等待,它似乎只是实例化了四个副本(然后只记得保留其中一个。)

是否有一些相对简单的方法可以在 PicoContainer 中获得真正的奇异行为?

0 投票
1 回答
446 浏览

java - 使用 pico 容器设置多个装饰器

我一直在使用 java 中的 pico 容器为我设计的 minecraft 插件框架做 DI。

插件具有在接口中定义的事件侦听器方法,每个接口一个方法。

如果一个特定的类在玩家加入和离开服务器时想要事件,它实现了两个特定的接口;在这种情况下 IPlayerLoginEvent 和 IPlayerQuitEvent。

然后我在框架中有一个类,它将每种类型的事件接口作为构造函数注入的参数。

这个容器类被标记为@Listener 以便craftbukkit 服务器软件调用它。

包装类使用特定于框架的类包装craftbukkit 发送的数据,至少在理论上,可以编写与服务器无关的插件。

小例子:

插件 AwesomePlugin 有一个实现 IPlayerLoginEvent 和 IPlayerQuitEvent 的 PlayerHandler 类。然后,框架需要构造每个类“PlayerLogin”和“PlayerQuit”的实例,将 PlayerHandler 作为构造函数参数传入。PlayerLogin 和 PlayerQuit 实例将依次向 CraftBukkit 注册为事件侦听器。

目前使用 pico 实现的方式可以在这里看到:

https://github.com/Runsafe/Framework/blob/master/src/no/runsafe/framework/event/EventEngine.java#L32

该代码确实看起来很糟糕,我无法为这种情况找到更优雅的解决方案,所以我现在恳求您的指导:)

0 投票
1 回答
648 浏览

java - Picocontainer 中的 JSR-330 支持:@Inject ... @Named("xxx)

我们找到了类似的代码

(利用 JSR-330 注释)对于传入“s”的字符串值非常有用。我们希望在使用哪个容器方面尽可能灵活,因此 Picocontainer 也是如此。

正如所写,Picocontainer 默默地忽略了注入。我将如何提示 PicoContainer 注入例如“注入字符串!” 这里?