Аннотированный Spring @ Controller также как Бин? - PullRequest
0 голосов
/ 03 мая 2011

Может ли аннотированный Spring MVC Controller также быть аннотирован с помощью @ Component / @ Service типа аннотаций и использоваться как в качестве контроллера, так и в качестве компонента?

Ответы [ 4 ]

5 голосов
/ 03 мая 2011

Изменить: уделение большего внимания аспекту разработки программного обеспечения и обновление ссылки API на SpringV3

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

Это уже Бин в вашем ApplicationContext, так что вы можете автоматически подключить его по типу. Нет необходимости добавлять аннотацию @Component.

Из документов Spring API: «Эта аннотация служит специализацией @Component, позволяя автоматически определять классы реализации при сканировании пути к классам».

http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/stereotype/Controller.html

То же самое относится к @ Service.

Несмотря на то, что я сделал это сам, я бы не рекомендовал такой подход к проектированию.

Если возможно, выполните рефакторинг необходимых функций в отдельный bean-компонент, который затем может быть (автоматически) подключен как к @Controller, так и к любому другому bean-компоненту, как требуется.

Если, как вы прокомментировали, вы «загнаны в угол» в этом решении (как и я, с помощью предыдущих вариантов дизайна), то пусть будет так.

НТН

4 голосов
/ 03 мая 2011

Это может , но не должно .Веб-контроллер должен быть точкой входа, ничем иным.

Любая логика многократного использования, которую он выполняет, должна быть на выделенном уровне обслуживания , а не в самом контроллере

1 голос
/ 03 мая 2011

Нет, звучит так, будто слишком много. Один или другой, а не оба. Я не знаю, возможно ли это (я сомневаюсь в этом), но я уверен, что это не рекомендуется.

0 голосов
/ 03 мая 2011

Я думаю, вам следует больше узнать о таких шаблонах, как Front Controller, MVC, DAO и многоуровневая архитектура и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...