public class A
{
public A(boolean deliverFromLocalWarehouse)
{
if(deliverFromLocalWarehouse)
{
wareHouseId = new Integer(10);
}
else
{
wareHouseId = new Integer(100);
}
}
public void deliver()
{
//get wareHouse address by Id and initiate delivery.
}
private Integer wareHouseId = null;
}
public class B
{
@Inject
private A a;
}
谢谢Srikrishna Kalavacharla
如果构造函数参数应该来自一个bean,我认为您可以简单地对其进行注释:
public A(@Inject boolean localWarehouse) { ...
并将其注入
@Inject A a;
如果需要一个的两个不同实例(具有不同的构造函数参数),可以对它们进行子类化:
public AForLocalWarehouse extends A {
public AForLocalWarehouse() {
super(true);
}
}
@Inject AForLocalWarehouse a;
@Produces @LocalWarehouse
public A localWarehouse() { return new A(true); }
@Produces @RemoteWarehouse
public A remoteWarehouse() { return new A(false); }
@Inject @LocalWarehouse A a;
@Inject @RemoteWarehouse A a;
问题内容: 我已经用策略模式实现了一个程序。所以我有一个在某些地方使用的接口,并且可以替换具体的实现。 现在我要测试该程序。我想以类似的方式做。编写一次测试,针对该接口进行测试。应在测试开始时注入具体的接口实现,以便我可以轻松地替换它。 我的测试类看起来与此类似: 在开始测试时,必须使用参数化的构造器来注入具体的策略实施。 现在我没有让TestNG运行它并注入具体的实现实例。我试图与继承几种方法,
我有一个自定义类,它有一个参数化构造函数 因此,实例化时需要3个参数。如果我想将这个类作为依赖项添加,我发现在Spring中没有直接的方法可以做到这一点。 我知道我可以简单地创建一个类的新实例并使用它的方法。但是我找不到任何直接的方法将这个类注入我的另一个类,即Rest控制器。 需要注意的是:所有3个参数都需要在运行时传递。我不能从属性文件中使用它们 即使Spring中没有直接的方法,我也想知道定
我想把它转换成这样的东西: 这将使类不可变并且更容易进行单元测试。问题是,由于executorService需要通过@Resource注释获得,它似乎不能通过构造函数注入。
我试图弄清楚如何在CDI中使用构造函数注入,其中一个参数是JNDI查找。 用正常的打野,我可以做到以下几点: 如何指定参数是通过JNDI查找检索的bean?在哪里指定JNDI名称?
问题内容: 例如: 清除代码。 但是,如果我添加带有参数的构造函数,则如下所示: 我懂了: 因此,不,我不知道如何通过构造函数传递参数。 请帮忙。 问题答案: 您需要说出您要使用pass it参数的构造函数。
下面是引用的Spring留档的AutoowiredAnnotationBeanPostProc处理器, 任何给定bean类中只有一个构造函数(最大值)可以携带此注释,其中“必需”参数设置为true,指示构造函数在用作Spring bean时自动连接。如果多个非必需的构造函数携带注释,它们将被视为自动连接的候选。将选择具有最多依赖项的构造函数,这些依赖项可以通过匹配Spring容器中的bean来满足