У меня есть контроллер длиной 1600 строк
Gulp.
Как вы обрабатываете несколько открытых методов с аннотацией @ModelAttribute
?Разве все они не вызываются при обработке запроса?
Когда используется для аннотирования метода, эта аннотация указывает, что возвращаемое значение метода должно использоваться для заполнения модели для каждого запроса, выполняемого этим контроллером.class, независимо от того, какой метод @RequestMapping
выполняется.
Я предлагаю вам выполнить аудит, чтобы увидеть, какие представления (например, JSP) используют данные модели, предоставленные различными методами @ModelAttribute
.Вполне вероятно, что каждое представление использует только подмножество этих данных.
Как только вы выяснили, какие комбинации методов @ModelAttribute
и @RequestMapping
идут вместе, затем разбейте их на отдельные классы.
Если это не сработало (может быть, все представления действительно используют все данные), тогда рассмотрите возможность извлечения методов @ModelAttribute
из класса в целом и объединения их вместе, используя один метод, который объединяет их выходные данныевместе вручную (например, передайте объект Model
или ModelMap
из метода @RequestMapping
этому новому методу, который затем добавляет биты модели к этому объекту.
Помните, @ModelAttribute
-аннотированные методыэто просто удобный способ добавления дополнительных данных модели. Это не единственный способ.