gpt4 book ai didi

java - 与 Guice 中的 FactoryModuleBuilder、@AssistedInject 和 @Assisted 等效的 Spring 是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:55 24 4
gpt4 key购买 nike

什么是 Spring Framework相当于FactoryModuleBuilder , @AssistedInject , 和 @AssistedGoogle Guice ?换句话说,使用 Spring 创建其方法接受应用程序(而非容器)必须提供的参数的工厂对象的推荐方法是什么?

Spring 静态工厂方法与FactoryModuleBuilder 不同。 FactoryModuleBuilder 构建一个 Guice 模块,生成实现 Factory Method Pattern 的“工厂” .与 Spring 静态工厂方法不同,这些工厂对象的方法是实例方法,而不是静态方法。静态工厂方法的问题在于它是静态的并且没有实现接口(interface),因此不能用替代工厂实现来替换它。但是,不同的 FactoryModuleBuilder 实例可以构建实现相同接口(interface)的不同工厂。

最佳答案

Spring 没有与 Guice FactoryModuleBuilder 的等价物。最接近的等效项是 Spring @Configuration 类,它提供了一个实现工厂接口(interface)的工厂 bean,其方法接受来自应用程序的任意参数。 Spring 容器可以将依赖项注入(inject) @Configuration 对象,而该对象又可以提供给工厂构造函数。与 FactoryModuleBuilder 不同,Spring 方法会生成大量典型的工厂实现样板代码。

例子:

public class Vehicle {
}

public class Car extends Vehicle {
private final int numberOfPassengers;

public Car(int numberOfPassengers) {
this.numberOfPassengers = numberOfPassengers;
}
}

public interface VehicleFactory {
Vehicle createPassengerVehicle(int numberOfPassengers);
}

@Configuration
public class CarFactoryConfiguration {
@Bean
VehicleFactory carFactory() {
return new VehicleFactory() {
@Override
Vehicle createPassengerVehicle(int numberOfPassengers) {
return new Car(numberOfPassengers);
}
};
}
}

关于java - 与 Guice 中的 FactoryModuleBuilder、@AssistedInject 和 @Assisted 等效的 Spring 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29555705/

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