0
私はGuiceを使って実装されたプロジェクトで作業していますが、Spring 3.xに移行する必要があります。ここでは、Beanの作成に追加のパラメータが必要な場合の使用例があります。これはSpringでどのように実装されていますか?アノテーションのみを使用して実装することは可能ですか?GuiceからSpringに@Assistedを使用してBeanを「追加パラメータとともに」移行する方法は?
import com.google.inject.AbstractModule;
import com.google.inject.assistedinject.FactoryModuleBuilder;
import com.google.inject.assistedinject.Assisted;
import javax.inject.Inject;
public class MyModule extends AbstractModule {
@Override
protected void configure() {
super.binder().install(new FactoryModuleBuilder().
implement(Car.class, CarImpl.class).
build(CarFactory.class));
}
}
public interface Car {
String getBrand();
String getModel();
}
public class CarImpl implements Car {
public CarImpl(@Assisted("brand") String brand, @Assisted("model") String model) {
this.brand = brand;
this.model = model;
}
@Override
String getBrand() { return brand; }
@Override
String getModel() { return model; }
private final String brand;
private final String model;
}
public interface CarFactory {
Car create(@Assisted("brand") String brand, @Assisted("model") String model);
}
public class Client {
@Inject CarFactory carFactory;
final Car myCar;
public Client() {
myCar = carFactory.create("BMW", "530d xDrive");
}
void driveIt() { /* don't crash it */ }
public static void main(String[] args) {
new Client().driveIt();
}
}
ありがとうございました!この仕事は豆と同様に混じりますか?たとえば、createにbeanがある場合。 'create(Stringブランド、Stringモデル、@Bean InsuranceContract保険)'? –
InsuranceContractを受け入れるように、CarFactory createメソッドとCarImplコンストラクタのシグネチャを変更します。すべてのInsuranceContract BeanのCarFactory Beanを作成したいとは思わない –
ちょうどそれを作成しましたが、そのタイプのユースケースもあります。 –