Spring中的FactoryModuleBuilder,@ AssistedInject和@Assisted相当于什么?

Der*_*har 10 java spring guice

什么是Spring框架相当于FactoryModuleBuilder, @AssistedInject以及@Assisted谷歌吉斯?换句话说,使用Spring创建工厂对象的建议方法是什么,其方法接受应用程序(而不是容器)必须提供的参数?

Spring静态工厂方法不一样FactoryModuleBuilder. FactoryModuleBuilder构建一个Guice模块,生成实现工厂方法模式的 "工厂" .与Spring静态工厂方法不同,这些工厂对象的方法是实例方法,而不是静态方法.静态工厂方法的问题在于它是静态的并且不实现接口,因此不能用替代工厂实现替换它.FactoryModuleBuilder但是,不同的实例可以构建实现相同接口的不同工厂.

Der*_*har 5

Spring没有与Guice相同的东西FactoryModuleBuilder.最接近的等价物是Spring @Configuration类,它提供了一个工厂bean,它实现了一个工厂接口,该接口的方法接受来自应用程序的任意参数.Spring容器可以将依赖项注入到@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);
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)