春季-使用@ModelAttribute的公共方法太多

我有一个1600行长的控制器.这主要是由一堆带有@modelattribute批注的公共方法填充的.它还有一些@RequestMapping方法.

我想减少行数并分班.如何使用@modelattribute批注处理多个公共方法?它们不是在处理请求时都被调用吗?

最佳答案

I have a controller that is 1600 lines long

喝了

How do you handle multiple public methods with @modelattribute annotation? Aren’t they all invoked whenever a request is processed?

当用于对方法进行注释时,此注释指示应使用该方法的返回值填充该控制器类执行的每个请求的模型,而不考虑执行哪个@RequestMapping方法.

我的建议是执行审计,以查看哪些视图(例如JSP)使用各种@modelattribute方法提供的模型数据.每个视图可能仅使用该数据的子集.

一旦弄清楚了@modelattribute和@RequestMapping方法的组合,然后将它们分解为单独的类.

如果那不可行(也许所有视图确实都使用了所有数据),则可以考虑从类中完全提取@modelattribute方法,并使用将它们的输出手动合并在一起的单个方法将它们缝合在一起(例如将Model或ModelMap对象从@RequestMapping方法传递到此新方法,然后将模型的位添加到该对象.

请记住,带@modelattribute注释的方法只是添加额外模型数据的便捷方法.它们不是唯一的方法.

相关文章

Spring Cloud为Spring Boot应用程序提供Netflix OSS集成。 提供的功能模块包括服务发现(Eureka),断路...
Spring Cloud 学习笔记;maven配置;入门学习;基于Spring Boot 实现;服务端配置,客户端配置;
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的...
Spring中各种方式进行日期时间处理,有作用于单个实体的,也有作用于全局的,有作用于请求入参的,有作...
跨域资源共享(Cross-origin resource sharing)(CORS)是W3C的标准,大部分的浏览器都实现了这个标准...
Spring Boot使创建基于Spring的应用程序变得轻松,大部分的SpringBoot应用程序都只需要很少的Spring配置...