0
나는 Guice를 사용하여 구현 된 프로젝트에서 일하고있다.하지만 우리는 이것을 Spring 3.x로 옮겨야한다. 그리고 콩이 생성을위한 추가적인 파라미터를 필요로하는 곳에서이 유즈 케이스를 가지고있다. Spring에서 어떻게 구현됩니까? 어노테이션 (xml 없음)만을 사용하여 구현할 수 있습니까?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 작성 메소드 및 CarImpl 생성자의 특성을 수정하십시오. 나는 모든 InsuranceContract Bean에 대해 CarFactory 빈을 만들고 싶지 않다고 생각한다. –
그냥 만들었지 만 그 유형의 유스 케이스도있다. –