问题标签 [guice]

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 回答
12980 浏览

java - 使用 Guice 的构造函数注入

我有一些使用工厂的示例代码。我想通过删除工厂来清理代码并改用 Guice。我试图这样做,但遇到了一个小障碍。我对Guice真的很陌生,所以我希望有人可以在这里帮助我。

现有客户端代码(使用工厂):

我尝试使用 Guice 进行重构:

我将如何构造一个在修改后的 MailClient中MailImpl使用该对象的实例?config我应该以这种方式使用 Guice 吗?

0 投票
2 回答
4656 浏览

dependency-injection - guice注射器在哪里存放?

你有什么建议?

我发现最适合我的解决方案 - 将注入器和模块保留在枚举类中。优点:

  1. 注入器和模块创建一次,
  2. 在运行应用程序时(不仅在引导时),可以从不同的类中使用注入器,
  3. 注射器放在一个地方,很容易找到。

例子:

0 投票
4 回答
22777 浏览

dependency-injection - 如何注射注射器?

情况:我需要一些惰性依赖实例化FooClass,所以我Injector作为构造函数参数传递给类。

但是 guice 不允许绑定核心类(注入器、模块等)。解决办法是什么?

0 投票
2 回答
902 浏览

java - 使用 URL 排除模式/使用 Guice 在开发模式下运行 App Engine

我正在使用 GAE 和 Guice,但我在开发服务器上遇到了问题。这是我的 web.xml

在我决定登录之前,一切都很好,此时它会抛出 404,因为它无法处理以/_ah. 这意味着我无法在开发服务器上登录或查看管理控制台。

有任何想法吗?我找不到如何向 URL 匹配器添加排除过滤器,也不知道 GAE 使用哪个 servlet 来服务开发登录和控制台:-/

0 投票
13 回答
1146 浏览

java - 让每个具体类都从接口继承是错误的吗?

这是对Zed Shaw 很久以前在他的博客中发表的某些评论的回应。

然后,专家们将闲逛去实现他们的 Flaming Tower of Babel,没有任何评论,非常复杂的模拟启用测试,确保每个单独的类都有一个接口,并以“Impl”结束每个类,因为这是最佳实践。

我以同等的方式使用 Spring 和 Google Guice,我注意到这些框架确实使用Impl后缀,但很少使用。在我的代码中,我在任何地方都使用接口,因为有人告诉我它可以更容易地模拟等。我对这个问题有一个幼稚的理解吗?(也许模拟框架可以与抽象类或类一起使用,我不知道。我从未尝试过)对于我的具体实现,我选择了 Spring 约定,即在实现名称前加上 Default 一词。

在这个问题上的最佳做法是什么?

UPDATE1我发现从方法返回接口很有用,因为我总是可以返回一个匿名类。

0 投票
2 回答
1245 浏览

osgi - Peaberry for Guice 解决了什么问题?

由于这个问题,我了解 OSGI 解决的问题....

OSGi 解决了什么问题?

而且我已经确信 Guice 很棒,所以我很好奇这个被称为“peaberry”的 Guice 的 OSGI 集成应该做什么,它似乎无处不在,甚至在 Maven 3 演示中也是如此。

http://code.google.com/p/peaberry/

0 投票
4 回答
21357 浏览

java - Guice、JDBC 和管理数据库连接

我希望在学习使用 JDBC 读取/写入 SQL 数据库的 Guice 时创建一个示例项目。然而,在多年使用 Spring 并让它抽象出连接处理和事务之后,我在概念上努力工作。

我想要一个服务来启动和停止事务并调用多个存储库,这些存储库重用相同的连接并参与相同的事务。我的问题是:

  • 我在哪里创建我的数据源?
  • 如何让存储库访问连接?(线程本地?)
  • 管理事务的最佳方式(为注释创建拦截器?)

下面的代码显示了我将如何在 Spring 中执行此操作。注入每个存储库的 JdbcOperations 将有权访问与活动事务关联的连接。

除了显示为事务创建拦截器的教程之外,我还没有找到很多涵盖这一点的教程。

我很高兴继续使用 Spring,因为它在我的项目中运行良好,但我想知道如何在纯 Guice 和 JBBC 中做到这一点(没有 JPA/Hibernate/Warp/Reusing Spring)

0 投票
4 回答
6334 浏览

obfuscation - 使用 proguard 混淆后,使用 google guice 注入不再起作用

有没有人尝试过将 google guice 的使用与混淆(特别是 proguard)结合起来?我的代码的混淆版本不适用于 google guice,因为 guice 抱怨缺少类型参数。这个信息似乎被 proguard 所做的转换步骤删除了,即使相关类被排除在混淆之外。

堆栈跟踪如下所示:

我试图创建一个似乎重现问题的小示例(不使用 guice):

如果你运行这个代码 unsbfuscated,输出看起来像这样:

但是运行使用 proguard 混淆的版本会产生:

这些是我用于混淆的选项:

有没有人知道如何解决这个问题(除了将相关文件放入单独的 jar 并且不混淆它的明显解决方法)?

最好的问候,
斯特凡

0 投票
3 回答
842 浏览

gwt - GWT Acegi 替代品

我正在开始新项目。客户端界面是基于 GWT(和 GXT)的,我没有说它是预先确定的。但是,我可以选择服务器端,这样我就可以玩得开心,并希望在此过程中学到新的东西。一些要求是:

  • 与服务器的交换将通过使用 JSON,如果不是全部,大部分 UI 将由客户端上的 GWT (JS) 生成,因此客户端/服务器交换将尽可能限制为数据交换
  • 没有休眠(我将连接到的专有数据库并不真正支持它)。在过去的项目中,人们会使用 JDBC 或 iBATIS
  • 某种 IoC(我认为 Guice 只是为了坚持使用 Google)
  • 某种基于 LDAP 的安全框架。过去我们会使用 Spring security (Acegi),但它并不理想,我们不得不对其进行大量定制

所以基本上我应该坚持使用久经考验的 Spring/Acegi 还是尝试基于 Guice 的东西?那个“东西”会是什么,它有多成熟?

0 投票
2 回答
1985 浏览

dependency-injection - 如何正确地使用深度对象图和许多依赖项进行手动 DI

我相信已经以某种或其他方式提出了这个问题,但我还没有得到它。

我们做了一个 GWT 项目,我的项目负责人不允许使用 GIN/Guice 作为 DI 框架(他认为新程序员不会理解它)所以我尝试手动进行 DI。

现在我遇到了深度对象图的问题。UI 中的对象层次结构如下所示:

AppPresenter->DashboardPresenter->GadgetPresenter->GadgetConfigPresenter

GadgetConfigPresenter 沿着对象层次结构树向下有一些依赖项,如 CustomerRepository、ProjectRepository、MandatorRepository 等。

因此,创建 GadgetConfigPresenter 的 GadgetPresenter 也具有这些依赖项等,直到创建 AppPresenter 的应用程序的入口点。

  • 这是手动DI应该工作的方式吗?
  • 这是否意味着我在启动时创建了所有依赖项,即使我不需要它们?
  • 像 GIN/Guice 这样的 DI 框架会在这里帮助我吗?