java - 属性设置后的 Guice

标签 java guice

有人知道如何在 Guice 中实现与 ' afterPropertiesSet 相同的功能' Spring 的界面? (它是一个构建后钩子(Hook))

最佳答案

到目前为止,如果您使用构造函数注入(inject)并且没有做任何过于疯狂的事情,那么最简单的解决方案是创建一个构造后方法并使用 @Inject 对其进行注释:

final class FooImpl implements Foo {
  private final Bar bar;

  @Inject
  FooImpl(Bar bar) {
    this.bar = bar;

    ...
  }

  @Inject
  void init() {
    // Post-construction code goes here!
  }
}

当Guice提供FooImpl时,它会看到它有一个@Inject构造函数,调用它,然后搜索用@Inject注释的方法并调用它们。其预期用例是 setter 注入(inject),但即使 @Inject 方法没有参数,Guice 也会调用它。

如果您使用 setter 或字段注入(inject)来注入(inject) deps,我不建议使用此方法,因为我不知道 Guice 是否对 @Inject 方法的调用顺序做出任何保证(也就是说,您的 init() 方法可能无法保证最后被调用)。也就是说,构造函数注入(inject)无论如何都是首选方法,因此这应该不是问题。

关于java - 属性设置后的 Guice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912278/

相关文章:

java - 错误 java.lang.ArrayIndexOutOfBoundsException :

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

jetty - 在 Servlet 应用程序中使用 Guice 发布 JAX-WS Web 服务

java - 如何避免重复代码

java - 从java调用批处理需要从当前批处理文件夹启动

java - 无法在 hibernate 状态下保存实体

java - 长宽比问题

java - 遍历一堆整数并匹配字符串

dependency-injection - 当有两个不同的构造函数时如何使用 Guice 进行注入(inject)?

java - 您可以注入(inject)自定义异常(或其提供者)吗?