Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 扩展通用控制器时发生Spring mvc错误_Java_Spring Mvc_Spring Web - Fatal编程技术网

Java 扩展通用控制器时发生Spring mvc错误

Java 扩展通用控制器时发生Spring mvc错误,java,spring-mvc,spring-web,Java,Spring Mvc,Spring Web,我有一个通用的基本控制器。以及扩展该通用控制器的控制器列表。我已经看到了一些可以扩展控制器的地方。但是我得到的是由:java.lang.IllegalStateException:不明确映射错误引起的 基本控制器: public abstract class BaseController<O extends BaseDomain, OT extends BaseDto> { private AbstractService<O, OT> service;

我有一个通用的基本控制器。以及扩展该通用控制器的控制器列表。我已经看到了一些可以扩展控制器的地方。但是我得到的
是由:java.lang.IllegalStateException:不明确映射
错误引起的

基本控制器:

public abstract class BaseController<O extends BaseDomain, OT extends BaseDto> {

    private AbstractService<O, OT> service;

    public BaseController(AbstractService<O, OT> service) {
        this.service = service;
    }

    @RequestMapping(value="/", method = RequestMethod.GET)
    public ResponseObject list() {
        return somework();
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public ResponseObject get(@PathParam("id") String id) {
        return somework();
    }

    @RequestMapping(value="/", method = RequestMethod.POST)
    public ResponseObject create(@Valid @RequestBody OT input, Errors errors) {
        return somework();
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.PATCH)
    public ResponseObject update(@PathParam("id") String id, @Valid @RequestBody OT input, Errors errors) {
        return somework();
    }

    @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
    public ResponseObject delete(@PathParam("id") String id) {
        return somework();
    }

}
@RestController("/apis")
public class ApiController extends BaseController<Api, ApiDto>{

    public ApiController(@Autowired ApiService apiService) {
        super(apiService);
    }
}
@RestController("/clusters")
public class ClusterController extends BaseController<Cluster, ClusterDto>{

    public ClusterController(@Autowired ClusterService clusterService) {
        super(clusterService);
    }
}
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map '/clusters' method 
public com.casa.authorizebase.dto.ResponseObject com.casa.authorize.controller.BaseController.get(java.lang.String)
to {[/{id}],methods=[GET]}: There is already '/apis' bean method
public com.casa.authorizebase.dto.ResponseObject com.casa.authorize.controller.BaseController.get(java.lang.String) mapped.
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4633)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5095)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1425)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1415)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:941)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:657)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map '/clusters' method 
public com.casa.authorizebase.dto.ResponseObject com.casa.authorize.controller.BaseController.get(java.lang.String)
to {[/{id}],methods=[GET]}: There is already '/apis' bean method
public com.casa.authorizebase.dto.ResponseObject com.casa.authorize.controller.BaseController.get(java.lang.String) mapped.
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:576)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:540)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:264)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:250)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:214)
    at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:184)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:127)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
    ... 42 more
我使用的是spring 4.3.10.RELEASE。有人帮我修理吗?谢谢。

您可以尝试:

@RestController
@RequestMapping("/apis")

您可以尝试以下方法:

@RestController
@RequestMapping("/apis")


在两个子控制器中都有这样的映射:

    @RestController
    RequestMapping (value= "/clusters") 

在两个子控制器中都有这样的映射:

    @RestController
    RequestMapping (value= "/clusters") 

传递给@RestController的值定义了Spring应用程序上下文中该bean的逻辑名称,默认情况下,该名称是该类名的camelCase版本。
@RequestMapping也可以用于指定类上的url映射。

传递给@RestController的值定义了Spring应用程序上下文中该bean的逻辑名称,默认情况下,该名称是该类名的camelCase版本。
@RequestMapping还可以用于指定类上的url映射。

您确定发布了所有内容吗?因为看起来你有一个/apis@OgnjenMišić感谢您的答复。是的,我已经贴了everything@DeepakAgrawal尝试“@RestController”RequestMapping(value=“/clusters”)是否确实发布了所有内容?因为看起来你有一个/apis@OgnjenMišić感谢您的答复。是的,我已经贴了everything@DeepakAgrawal尝试“@RestController”请求映射(value=“/clusters”)