我有一个1600行长的控制器。这主要是用一堆带有@ModelAttribute
批注的公共方法填充的。它还有一些@RequestMapping
方法。
我想减少行数并分班。如何使用@ModelAttribute
注释处理多个公共方法?它们不是在处理请求时都被调用吗?
最佳答案
我有一个1600行长的控制器
喝了
如何使用@ModelAttribute
注释处理多个公共方法?它们不是在处理请求时都被调用吗?
当用于对方法进行注释时,此注释指示对于该控制器类执行的每个请求,都应使用该方法的返回值来填充模型,而不管执行哪种@RequestMapping
方法。
我的建议是执行审计,以查看哪些视图(例如JSP)使用各种@ModelAttribute
方法提供的模型数据。每个视图可能仅使用该数据的子集。
一旦确定了@ModelAttribute
和@RequestMapping
方法的组合,然后将它们分解为单独的类。
如果那不可行(也许所有视图确实都使用了所有数据),则可以考虑从类中完全提取@ModelAttribute
方法,并使用一种将它们的输出手动合并在一起的方法(例如,通过将Model
方法中的ModelMap
或@RequestMapping
对象添加到此新方法,然后将模型的位添加到该对象。
请记住,使用@ModelAttribute
注释的方法只是添加额外模型数据的便捷方法。它们不是唯一的方法。