【问题标题】:Difference between using lombok vs Inject for constructor使用 lombok 与 Inject 构造函数之间的区别
【发布时间】:2019-03-28 05:59:48
【问题描述】:

注入构造函数的两种方法:

@Slf4j
@Component
@RequiredArgsConstructor (onConstructor = @_(@Inject))
public ClassA {
   @NonNull private ClassB b;
}

另一种方法是使用注入:

@Slf4j
@Component
public class ClassA {
   private final ClassB b;
   @Inject
   public ClassA(ClassB b) {
      this.b = b;
   }
}

想知道有什么不同吗?

【问题讨论】:

    标签: dependency-injection constructor lombok


    【解决方案1】:

    是的,后者中有更多代码:)。 Lombok 在编译阶段做了一些magic,也许这两者的字节码有点不同,但结果字节码应该几乎相同,并且功能完全相同。

    超出范围:请注意,根据具体情况,直接注入该字段可能会更清楚:

    @Inject
    private final ClassB b;
    

    与此不同的是,b 将仅在构造函数执行后才被注入,为此您需要使用@PostConstruct 创建方法,该方法执行原本应该在构造函数中完成的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-01
      • 2015-06-05
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 2012-08-25
      • 2013-07-21
      相关资源
      最近更新 更多