Java Spring通过外部工厂自动创建通用bean
我有一个通用接口和一些实现它的类,例如:Java Spring通过外部工厂自动创建通用bean,java,spring,Java,Spring,我有一个通用接口和一些实现它的类,例如: interface Product { ... } class Beverage implements Product { ... } class Food implements Product { ... } ... interface Worker<T extends Product> { ... } class BeverageWorker implements Worker<Beverage> { ... } class
interface Product { ... }
class Beverage implements Product { ... }
class Food implements Product { ... }
...
interface Worker<T extends Product> { ... }
class BeverageWorker implements Worker<Beverage> { ... }
class FoodWorker implements Worker<Food> { ... }
...
假设我有一个创建这些的通用方法,即:
BeverageWorker beverageWorker = WorkerFactory.workerFor(Beverage.class);
FoodWorker foodWorker = WorkerFactory.workerFor(Food.class);
...
是否有一种方法可以将上面的SpringConfig
编写为泛型,以避免手动枚举所有类型
例如:
class SpringConfig {
@Bean
<T extends Product> Worker<T> genericWorker(Class<T> productClass) {
return WorkerFactory.workerFor(productClass);
}
}
class-SpringConfig{
@豆子
Worker genericWorker(类productClass){
返回WorkerFactory.workerFor(productClass);
}
}
但也要求Spring在需要类型为
Worker
的bean时调用此方法。难道您不能让您的WorkerFactory
对象接收Product
作为workerFor
方法的参数吗?我不知道这是否可行,您可以编写一个注释,@Worker,注释Worker类,并在运行时使用反射APICan以某种方式实例化它们。您的WorkerFactory
对象没有收到Product
作为workerFor
方法的参数吗?我不知道这是否可行,您可以编写一个注释,@Worker,注释工作类,并在运行时使用反射API以某种方式实例化它们
class SpringConfig {
@Bean
<T extends Product> Worker<T> genericWorker(Class<T> productClass) {
return WorkerFactory.workerFor(productClass);
}
}