RequestMapping работает на частных методах - PullRequest
0 голосов
/ 28 мая 2018

Теперь я понимаю, что методы @RequestMapping должны быть общедоступными.Могут ли они быть частными?Если да, то когда мы будем использовать это?

Причина, по которой я спрашиваю об этом, заключается в том, что я заметил, что @RequestMapping работает и с закрытыми методами.Почему это так?

Это потому, что пружинный доступ к этим методам осуществляется через отражения, поэтому модификаторы доступа на самом деле не рассматриваются?Это ошибка или функция, которая использует?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

В ответ на ключевой вопрос в JIRA ISSUE

Это действительно работает так, как задумано.Как правило, мы не ограничиваем декларации видимости рефлексивных методов, оставляя этот выбор на усмотрение разработчика.Тем не менее, для этого конкретного случая я бы порекомендовал публичные объявления или объявления, потенциально видимые в пакете (без ключевого слова видимости), так как методы частного обработчика на самом деле оказываются здесь более нишевым.

0 голосов
/ 28 мая 2018

Теперь настоящую причину (если она существует) трудно сказать, не попадая в головы разработчиков Spring, и потому что это было реализовано довольно давно.

Я бы предположил, что это было упущением, поскольку нет существенного преимущества в использовании частных методов в качестве целей для сопоставления запросов.Конечно, вы больше не можете вызывать их из своего другого кода, но если вы вызываете методы контроллера из своего кода, вы заслуживаете всех проблем, которые у вас возникают.

Эта ссылка описываетИнтересная ситуация, когда отображение запроса работает для закрытого метода пакета, но поскольку AOP работает только для открытых методов, результатом является путаница и разрушение.Также предоставлено 4 (четыре!) Места, где можно применить исправление, чтобы не закрытые методы не становились мишенями @RequestMapping.

Так что я бы отнес это к (незначительной) ошибке.Теперь программисты должны оставаться на своих местах и ​​не забывать обнародовать эти методы.Я посмотрю, смогу ли я найти для этого существующую заявку на ошибку.

...