我有一个设计问题,我一生都无法弄清楚。好的代码没有重复。我已经生成了我的 DAO,所以所有基本的 crud 操作都被继承了我正在尝试对带有注释控制器的 Spring MVC 做同样的事情。
我找到了这个问题,但没有答案:How to Remove Duplication from Spring 3 MVC Standard and Ajax Request Controllers and Views
如果我有类似以下示例的内容,假设我重构为使用 AbstractBaseService 和 BaseModel(我这样做但没有代码),我如何将注释信息放入 GenericAbstractBaseController 或 BaseController 接口之类的东西中?我已经尝试过(这里没有代码),但问题是注释不是继承的,也不能在运行时添加。
我看到 javassist 可用于字节码修改,因此我实际上可以在编译后添加注释以保持代码干净,但这似乎过于复杂。
我给导师发了一条说明,他建议使用带有命名约定的 AOP 来编织建议或反射以识别继承类中的注释,但我不确定如何将这些信息实际提供给 spring,因为我实际上无法添加注释在运行时。我想我在这里遗漏了一些关键的关键,有人会来来去去——他只给我发回了几行。
这是代码 - 我如何删除重复的 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