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:
@Controller
public class FooController {
...
我是否必须在admin
包中为控制器使用其他名称?
答案 0 :(得分:15)
@Component
或派生(@Controller
,@Service
等)的默认bean名称是具有较低第一个字符的非限定类名。为了将这两个控制器放在一起,只需设置一个不同的bean名称(至少其中一个):
@Controller("secondFooController")
检查文档的this section。
答案 1 :(得分:0)
使用 spring.factories 并在自动配置中添加您的控制器类。 现在,您将拥有带有限定名称的 bean 名称,并且不会发生冲突。