为什么我不能在具有基于注释的配置的不同包中具有相同的Controller名称?

Ugo*_*gor 5 java spring spring-mvc

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]
Run Code Online (Sandbox Code Playgroud)

在两个包中,我使用@Controller注释定义了Controller :

@Controller
public class FooController {
...
Run Code Online (Sandbox Code Playgroud)

我是否必须在admin包中为Controller使用不同的名称?

Cos*_*atu 16

@Component或派生词(@Controller,@Service等)的默认bean名称是具有较低第一个字符的非限定类名.为了将这两个控制器放在一起,只需设置一个不同的bean名称(至少其中一个):

@Controller("secondFooController")
Run Code Online (Sandbox Code Playgroud)

请查看文档的此部分.