小编SJh*_*Jha的帖子

Spring RestController中的继承

我有一个Spring RestController,它处理API调用的第1版.

package rest.v1;

@RestController
@RequestMapping("v1/someResource")
public class Controller_V1 {

    @RequestMapping(value = "/{resourceName}", method = RequestMethod.GET)
    public Object retrieve() throws Exception {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建另一个处理版本2请求的控制器.同时我想继承已经在版本1控制器中的实现.这是因为从v1到v2不变的实现将仅从v1继承.

所以像这样:

package rest.v2;

@RestController("controllerV2")
@RequestMapping("v2/someResource")
public class Controller_v2 extends Controller_v1 {

    @RequestMapping(value = "/{resourceName}", method = RequestMethod.GET)
    public Object retrieve() throws Exception {
        //implementation overridden from v1
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做会导致ConflictingBeanDefinitionException.我也不确定是否应该像上面那样扩展控制器.

我知道我可以在同一个控制器的RequestMapping中使用多个路径,如下所示:

@RestController
@RequestMapping(value = { "v1/someResource", "v1/someResource" })
public class Controller_V1 {

}
Run Code Online (Sandbox Code Playgroud)

但上述情况对我的情况不起作用.

以下是控制器扩展时的堆栈跟踪:

 [java] org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class …
Run Code Online (Sandbox Code Playgroud)

java rest spring

6
推荐指数
1
解决办法
8002
查看次数

标签 统计

java ×1

rest ×1

spring ×1