我想要的是配置内部依赖性略有不同的两个(或更多)单身人士。
我们说我有车:
@Component
public Car {
@Inject private Engine engine;
@Inject private Chassis chassis;
}
现在引擎有两种变体,@标准和@Powerful
我想要的是注入一辆汽车,并使用@Standard或@Powerful对此注射进行限定,而无需自己创建2个Car实例。
换句话说,当我写:
@Inject @Powerful Car car;
我希望Spring使用标准机箱和强大的引擎创建(或使用现有的)单体汽车。
但是当我写道:
@Inject @Standard Car car;
我希望Spring使用标准机箱和标准引擎创建(或使用现有的)单件车。
到目前为止,我只能通过赋予Car一个构造函数并在@Configuration类中自己执行此操作来管理它。对于这个例子来说这是可以的,但是如果有10次注射汽车则很烦人。
@Bean @Powerful
public Car car1() {
return new Car(new PowerfulEngine(), new Chassis());
}
@Bean @Standard
public Car car1() {
return new Car(new StandardEngine(), new Chassis());
}
@Bean @Standard @Sedan
public Car car1() {
return new Car(new StandardEngine(), new SedanChassis());
}
etc...
必须有一种更简单的方法......
春天可以为我创造这两种豆子吗?如果有3种发动机类型,那么更多呢?或3种发动机类型和5种底盘类型(意味着可以有15种不同配置的Car对象)?
即:
@Inject @Powerful @Sedan Car car;
@Sedan是机箱变体......