我有一個設計問題,我無法爲我的生活弄清楚。 好的代碼沒有重複。我已經基因化了我的DAO,所以所有基本的crud操作都被繼承了。我試圖用帶註釋控制器的Spring MVC做同樣的事情。如何在Spring MVC中生成REST控制器以刪除複製
我發現這個問題,但沒有答案有:How to Remove Duplication from Spring 3 MVC Standard and Ajax Request Controllers and Views
如果我有像下面的例子,假設我重構使用AbstractBaseService和BaseModel(我這樣做,但沒有代碼),如何我可以將註釋信息放入類似GenericAbstractBaseController或BaseController接口的東西嗎?我試過了(這裏沒有代碼),但問題是註解不是繼承的,不能在運行時添加。
我看到javassist可以用於字節碼修改,這樣我實際上可以在編譯後添加註釋以保持代碼清潔,但這看起來過於複雜。
我給一位導師發了一封便條,他建議使用AOP的命名規則來編織建議或反射來識別來自繼承類的註釋,但我不確定如何才能將這個信息提供給春天,因爲我實際上不能在運行時添加註釋。我想我在這裏錯過了一些重要的關鍵,有人會來這裏 - 他只是送了我幾條線。
這是代碼 - 我該如何刪除重複的crud邏輯。
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
UserService userService;
@RequestMapping(value="/", method = RequestMethod.GET)
public @ResponseBody List<User> doGetIndex(ModelMap model) {
return userService.listPage(0, 10);
}
@RequestMapping(value="/{name}", method = RequestMethod.GET)
public @ResponseBody User doGet(@PathVariable String name, ModelMap model) {
return userService.getByUsername(name);
}
//post
//put
//delete
運作的?我不認爲註釋是繼承的。我會再嘗試。我有一個這樣的通用抽象控制器 - 我會再試一次,稍後發佈 - 謝謝。 –