在我的applicationContext.xml中,我有2个具有相同类和不同id的bean(test和test1)。正确加载应用程序上下文,但是当我将@RequestMapping
添加到一个方法时,bean创建失败并出现以下错误。这曾用于AnnotationMethodHandlerAdapter
但与RequestMappingHandlerMapping
和RequestMappingHandlerAdapter
失败。
错误:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'test1' bean method
public java.lang.String com.test.render()
to {[/render],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}: There is already 'test' bean method
请建议如何解决此问题。
代码:
的applicationContext.xml
<bean id="test" class="com.abc.test" />
<bean id="test1" class="com.abc.test" />
控制器
@Controller
@RequestMapping( value ={"/test/", "/test1/"})
public class test {
@RequestMapping("render")
public String render ()
{
//some code here.
}
}
答案 0 :(得分:0)
你可以这样做...... 从单例方法切换到原型和xml内部
以编程方式定义
class P1 {
@Autowire
NotSoSingleton prototypedBean;
}
class P2 {
@Autowire
NotSoSingleton prototypedBean;
}
class P3 {
@Autowire
NotSoSingleton prototypedBean;
}
这种做法会吗?
答案 1 :(得分:0)
我可以找到解决这个问题的方法。这个解决方案,如果我在5月21日发布的评论
我使用order属性在xml文件中实例化自定义的RequestMappingHandlerMapping并且它工作了!!
我的自定义RequestMappingHandlerMapping取代了<annotation-driven>
加载的默认值。