Tag: guice

Guice,afterPropertiesSet

有人知道如何在Guice中实现与Spring中的’ afterPropertiesSet ‘界面相同的function? (它是一个建筑后挂钩)

Guice在UI线程问题之外创建Swing组件?

我正在使用Google Guice作为IOC容器处理Java Swing应用程序。 事情进展顺利。 有一些UI问题。 当用Pushing像素替换标准L&F时由于在UI线程之外创建Guice的Swing组件,物质L&F应用程序未运行。 有没有办法告诉Guice在UI线程中创建Swing组件? 也许我应该创建自定义提供程序,它们将在SwingUtilities.invokeAndWait(Runnable)创建它们之后返回Swing组件。 我不喜欢在UI线程中运行整个应用程序的想法,但也许它只是一个完美的解决方案。

JUnit中的Guice注入器测试

使用Guice,在每个JUnit测试类中获取一个新的注入器是一个好习惯,因为每个测试类应该是独立的吗?

在Guice中管理同一依赖关系树的多个版本的最佳模式是什么?

我想实现同一种依赖树/链的几个版本,它们对该树/链中的某些接口使用不同的实现。 在这种情况下使用的最佳Guice练习/模式是什么? 这是我的问题的一个具体例子。 我有一个Writer接口,它可能是文件Writer器或std-out Writer器,它将位于我的依赖层次结构的叶子中。 像这样的东西: interface Writer { … } class FileWriter implements Writer { … } class StdOutWriter implements Writer { … } 另一个记录器接口用于在writer上添加一个间接层。 例如: interface Logger { … } class LoggerImpl{ @Inject public Logger(Writer out){ … } public void log(String message){ out.println(message); } } 然后有一个使用记录器的客户端。 class Client{ @Inject public Client(Logger logger){ … […]

TypeLiteral注射reflection

上下文:java使用guice (最新版本) 大家好,是否可以通过这种方式向Guice注入一些TypeLiteral: public MyClass getMyClass(Injector injector, Class a, Class b) { //how to Inject MyClass with type a & b ? //eg : injector.getInstance(MyClass) } public interface MyClass { public T do(S s); } public class ClassOne implements MyClass { public Integer do(String s) { //do something } } Module : bind.(new TypeLiteral<MyClass(){}).to(ClassOne.class); bind.(new […]

使用Guice 2.0的ClassNotFoundException

下面的代码使用Guice 2.0生成错误。 有了Guice 1.0,一切都很好。 JDK是Java 6更新15。 public class App { public static void main(String[] args) { Guice.createInjector(new AbstractModule() { @Override protected void configure() { // just testing } }); } } 错误是: Exception in thread “main” java.lang.NoClassDefFoundError: [Lorg/aopalliance/intercept/MethodInterceptor; at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) at java.lang.Class.getDeclaredMethods(Class.java:1791) at com.google.inject.internal.ProviderMethodsModule.getProviderMethods(ProviderMethodsModule.java:78) at com.google.inject.internal.ProviderMethodsModule.configure(ProviderMethodsModule.java:70) at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:232) at com.google.inject.spi.Elements.getElements(Elements.java:101) […]

获得相同类型的多个guice单身人士

你能得到2个相同底层类型的单例实例吗? 这在spring显然是微不足道的,因为它基于你附加范围的命名实例,但我看不到guice中的等价物,它是关于实现类的绑定类型。 请注意,我不希望必须绑定到实例,因为有问题的实例被guice注入了其他依赖项。

guice AbstractModule安装方法

AbstractModule类的方法install()什么作用? 有人可以向我解释一下吗? 从我从guice网站上读到的文档我得到的只是: 使用给定的模块配置更多绑定。 准确配置什么绑定? 来自已安装模块的绑定或调用install方法的类的绑定?

注释驱动的dependency injection,处理不同的环境

我认为许多专业人士没有转向注释驱动的dependency injection的主要原因是它不支持在开发/测试/生产环境之间切换。 出于开发目的,在许多情况下,您不仅使用不同的服务(以及它们的连接),但有时您需要模拟它们,或创建Dummy实例。 昨天我找到了一个带有Spring注释的解决方案: @Value(“#{${env} == “production” ? realService : dummyService}”) private SomeService service; ……哪个应该有用,但不好看。 我会对你的解决方案或论点非常感兴趣:为什么它不是一个真正的问题;-) Guice,Spring或任何其他人都欢迎。 最初的问题是这个主题的一部分: Spring @Autowired用法 ,但我认为值得创建一个新线程。

Guice只注入一些构造函数

假设我有一些类如下的Message类。 (为简单起见,这是一个简化的课程。) public class Message { private String text; public Message(String text) { this.text = text; } public void send(Person recipient) { // I think I should be Guice-injecting the sender. MessageSender sender = new EmailBasedMessageSender(); sender.send(recipient, this.text); } } 由于我有不同的MessageSender实现,并且可能想要对这种发送能力进行unit testing,我想我应该在Message的send()方法中注入MessageSender 。 但是我该怎么做? 我见过的所有Guice示例和我理解的似乎都在构造函数中执行注入: public class Message { private String text; private MessageSender sender; […]