gpt4 book ai didi

java - 使用构造函数参数的依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-01 12:53:13 26 4
gpt4 key购买 nike

我有一个EJB,如下所示:

public class Bar() {

private String s;

public Bar() {
this.s = "bar";
}

@Inject public Bar(String s) {
this.s = s;
}

}
  1. 如何使用arg-constructor将该bean注入(inject)另一个Foo类?

  2. 然后,我定义 Foo类作为 EJB,目的是将其DI执行到另一个类(例如,WebServlet)中。我怎样才能注入(inject)Foo类实例通过传递 String正确设置Bar arg-constructor 作为内部依赖

  3. 有没有更好的方法来定义 Bar为了达到以上几点?

最佳答案

带注释的构造函数注入(inject)告诉 CDI,每当有人请求注入(inject) Bar 实例时,它应该使用标有 @Inject 的构造函数。

然后,CDI 容器尝试获取所有必需的构造函数参数的实例,但失败,因为它无法处理“String”。它只是不知道你指的是哪个字符串。

你必须通过使用 Producer 和 Qualifier 告诉容器你想要什么 String 来帮助容器解决依赖关系。我只是在这里为您提供最简单的解决方案:

public class Bar {

@Inject
public Bar(@Named("myString") String s) {
this.s = s;
}
}

然后是另一个类(不一定是不同的类,但它更具可读性):

public class MyStringProducer {
@Produces
@Named("myString")
public String getMyString() {
return ...; // whatever you want ... read JSON, parse properties, randomize ...
}
}

关于java - 使用构造函数参数的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24056328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com