2017-10-09 49 views
3

我有簡單的WebApp誰有兩個表ClothesShoes
創建控制器的最佳做法是什麼,因爲它們都具有CRUD方法。
我有兩個控制器這樣的:實現相同功能的控制器的最佳實踐是什麼?

@Controller 
@RequestMapping("/shoes") 
@Component 
public class ShoesController { 
private ShoesService shoesService; 

@Autowired 
public void setShoesService(ShoesService shoesService) { 
    this.shoesService = shoesService; 
} 

public ShoesService getShoesService() { 
    return shoesService; 
} 

@RequestMapping(value = "/view/all", method = RequestMethod.GET) 
public @ResponseBody 
List<Shoes> getAllShoes(){ 
    return shoesService.getAllShoes(); 
} 

@RequestMapping(value = "/byId/{id}", method = RequestMethod.GET) 
public @ResponseBody 
Shoes getShoesById(@PathVariable ("id") Integer id, Shoes shoes){ 
    //TODO remove hardcoded values 
    return shoesService.getShoesByID(id, shoes); 
} 

@RequestMapping(value = "/view/{columnName}={value}", method = 
RequestMethod.GET) 
public @ResponseBody 
List<Shoes> getByColumnValue(@PathVariable ("columnName") String colunmName, 
@PathVariable("value") String columnValue, Shoes shoes){ 
    //TODO remove hardcoded values 
    return shoesService.getByColumnValue(colunmName, columnValue, shoes); 
} 

@RequestMapping(value = "/edit/id={id}", method = RequestMethod.GET) 
public @ResponseBody 
Shoes update(@PathVariable ("id") Integer id, Shoes shoes){ 

    shoes = getShoesById(id, shoes); 
    shoes.setShoesSeason("SPRINGGG"); 
    shoesService.updateShoes(shoes); 
    return shoes; 
} 

@RequestMapping(value = "/delete/{id}", method =RequestMethod.GET) 
public @ResponseBody 
List<Shoes> delete(@PathVariable ("id") Integer id, Shoes shoes){ 
    shoes = getShoesById(id, shoes); 
    shoesService.delete(shoes, id); 
    return getAllShoes(); 
} 

@RequestMapping(value = "/add", method = RequestMethod.GET) 
public @ResponseBody 
List<Shoes> add (Shoes shoes){ 
    shoes = new Shoes(333666, "Blue", "Autumn", "Noski", "URL"); 
    shoesService.add(shoes); 
    return shoesService.getAllShoes(); 
} 
} 

Clothes控制器具有相同的實現。
具有相同功能的實現控制器的最佳實踐是什麼?

+0

爲什麼沒有抽象控制器... –

+0

你不需要控制器上的'@ Component'。 '@ Controller'是一個更具體的版本,使你的'@ Component'變得冗餘 – zero01alpha

回答

2

我認爲很好很簡單的解決方案是使用Spring Data REST。 您也可以創建抽象控制器,該控制器可以按照您要使用的類型進行參數化。

1

您還可以創建父類並使用繼承。這樣,所有的子類都將具有與父類相同的方法。如果需要任何特定的方法,可以直接在子類中創建它。