2017-03-07 31 views
-1

有三个名为car_details,bike_details,truck_details的表对于所有三个表(RegistrationNo,No.ofYearsOld,OwnerName,ContactNo,VehicleType )车辆类型应指定车辆的类型(汽车或自行车或卡车),其默认值是汽车。在表格之间切换并通过考虑使用策略模式的特定字段来保存数据

所有这三个表都有各自独立的POJO和仓库

的任务是我需要考虑vehicleType场的数据保存到相应的表。

在我的控制器

@RequestMapping (value = "/createVehicle/", method = RequestMethod.POST, consumes = "application/json") 
@ResponseBody 
public ResponseEntity<> createGeneralAuthentication (@RequestBody CarDetails carDetails) { 


     public void roleSelector(String type) { 

      switch (type){ 
       case "car": 
        return new CarRepository(); 
       break; 
       case "bike": 
        return new BikeRepository(); 
       break; 
       case "truk": 
        return new TruckRepository(); 
       break; 
      } 
     } 
    RolesRepository rolesRepository = new roleSelector(carDetails.getType()); 

     try { 
      rolesRepository.save(carDetails); 
     } catch (Exception ex) { 
      return new ResponseEntity<>(HttpStatus.NOT_FOUND); 

     } 
      return new ResponseEntity<>(HttpStatus.OK); 
    } 

如果没有其他应使用它需要一个策略模式。

+0

我更关心在Spring应用程序中使用'new'(很可能它不起作用)。 –

回答

0

实际上它已经是一个策略模式:每个实现的行为都不同,并且您使用单个接口来抽象其实现细节。这里roleSelector方法用于创建实例(如工厂)。

+0

但实际上这个代码不工作,我需要的只是使这个模式可执行 –

+0

它是如何工作的?它给你什么错误/异常?为什么你没有在问题中提到它?我的猜测是你有NullPointerException,因为使用'new'而不是从Spring注入和使用bean。 –

+0

实际上,存在多个错误。我传递的对象是carDetails,然后考虑类型,我们必须选择相应的存储库。此外,我们需要更改对象类型以匹配存储库。我们怎么做到这一点。我试图让接口存储库,但我无法做到。 –

相关问题