是什么Spring框架 http://projects.spring.io/spring-framework/相当于FactoryModuleBuilder http://google.github.io/guice/api-docs/latest/javadoc/index.html?com/google/inject/assistedinject/FactoryModuleBuilder.html, @AssistedInject http://google.github.io/guice/api-docs/latest/javadoc/com/google/inject/assistedinject/AssistedInject.html, and @Assisted http://google.github.io/guice/api-docs/latest/javadoc/com/google/inject/assistedinject/Assisted.html in 谷歌指南 https://github.com/google/guice?换句话说,使用 Spring 创建其方法接受应用程序(而不是容器)必须提供的参数的工厂对象的推荐方法是什么?
Spring静态工厂方法与FactoryModuleBuilder
. FactoryModuleBuilder
构建一个 Guice 模块,生成实现以下功能的“工厂”工厂方法模式 http://en.wikipedia.org/wiki/Factory_method_pattern。与 Spring 静态工厂方法不同,这些工厂对象的方法是实例方法,而不是静态方法。静态工厂方法的问题在于它是静态的并且不实现接口,因此不能用替代工厂实现来替换它。不同的FactoryModuleBuilder
然而,实例可以构建实现相同接口的不同工厂。
Spring 没有与 Guice 相当的东西FactoryModuleBuilder
。最接近的等价物是 Spring@Configuration
提供工厂 bean 的类,该工厂 bean 实现工厂接口,其方法接受来自应用程序的任意参数。 Spring 容器可以将依赖项注入到@Configuration
对象,然后它可以提供给工厂构造函数。不同于与FactoryModuleBuilder
,Spring 方法生成了大量典型的工厂实现样板代码。
Example:
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);
}
};
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)