Почему я не могу иметь одно и то же имя контроллера в другом пакете с конфигурацией на основе аннотаций? - PullRequest
5 голосов
/ 27 июля 2011
Jul 27, 2011 10:56:15 AM org.springframework.web.servlet.FrameworkServlet 
initServletBean

SEVERE: Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: 

Unexpected exception parsing XML document from ServletContext resource
[/WEB-INF/dispatcher-servlet.xml]; 

nested exception is java.lang.IllegalStateException: 

Annotation-specified bean name 'fooController' for 
bean class [com.fooapp.ctrl.FooController] 
conflicts with existing, non-compatible bean definition of same name 
and class [com.fooapp.ctrl.admin.FooController]

В обоих пакетах я определил контроллер с помощью аннотации @Controller:

@Controller
public class FooController {
...

Нужно ли использовать другое имя для контроллера в пакете admin?

1 Ответ

15 голосов
/ 27 июля 2011

Имя бина по умолчанию для @Component или производного (@Controller, @Service и т. Д.) - это неквалифицированное имя класса с нижним первым символом. Чтобы соединить эти два контроллера, просто установите другое имя компонента (хотя бы для одного из них):

@Controller("secondFooController")

Проверьте этот раздел документации.

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