我有一个卡车服务,其中包含根据特定卡车类型而定的truckLoader。
我没有在此类上使用@Service注释,因为如果类中包含泛型,spring不会为我生成bean:它不知道为TruckLoader类型注入什么。
当前,我使用config类生成这两个服务(请参见下文)。 我发现配置文件效率不高,我想找到另一种创建服务的方式。
当前代码:
public class TruckService<T extends Truck>{
private TruckLoader<T> truckLoader;
public TruckService(TruckLoader<T> truckLoader){
this.truckLoader = truckLoader;
}
public T CheckTruckAndLoadTruck(T truck){
check(truck);
return truckLoader.load();
}
private check(T truck){
//Do some generic checks on the truck
}
}
interface TruckLoader<T extends Truck>{
void load(T truckToBeLoaded);
}
我使用以下配置文件创建每个TruckService:
@Config
public class TruckConfig{
@Bean
TruckService<BigTruck> bigTruckService(TruckLoader<BigTruck> bigTruckLoader) {
return new TruckService<>(bigTruckLoader);
}
@Bean
TruckService<SmallTruck> smallTruckService(TruckLoader<SmallTruck> smallTruckLoader) {
return new TruckService<>(smallTruckLoader);
}
}
这行得通,但是我发现侧面配置很脏。
我目前有两个主要想法:
创建一个服务,以查找现有的所有大型卡车和小型卡车装载机,并从中生成所有卡车服务
将配置分为两个单独的服务:
@Service
public class BigTruckService extends TruckService<BigTruck>{
@Autowired
private TruckService<BigTruck> truckService;
}
@Service
public class SmallTruckService extends TruckService<SmallTruck>{
@Autowired
private TruckService<SmallTruck> truckService;
}
有没有办法用较少的配置文件就可以做到这一点?
我使用spring bean 5.1.10.RELEASE和spring core 5.1.10.RELEASE和Java 1.8