我正在尝试实现Springboot REST API。我定义@RestController的类似乎不起作用。我有一个名为MyService的类,它实现了所有抽象方法。我在类声明的顶部添加了@RestController注释,并为我需要从其余调用调用的方法添加了@RequestMapping注释。但这不起作用。我尝试了一个没有实现任何接口的类,并且工作正常。
这是代码
package com.my.service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyService implements MyServiceInterface{
@Override
@RequestMapping("/age")
public String Age() {
return "24";
}
}
MyServiceInterface的代码
public interface MyServiceInterface {
public String Age();
}
我从邮递员那里得到的错误是
{"timestamp":1489688505136,"status":404,"error":"Not Found","message":"No message available","path":"/age"}
答案 0 :(得分:0)
@RequestMapping("/age")
public String Age() {
return "24";
}
答案 1 :(得分:0)
我在合同测试中遇到了同样的问题。我很困惑,因为还有其他@RestController
个实现了它们的接口并且已正确映射。
然后,我以产品模式启动应用程序,并意识到控制器已正确映射。太奇怪了!
我正要删除接口,突然间想到了Spring代理。不知道为什么会想到我。然后,我检查了src/test/application.properties
,发现它具有此属性spring.aop.proxy-target-class=false
。我删除了它,现在一切都按预期运行。
现在这对我来说很有意义。 src/main/application.properties
没有该属性。因此,在生产模式下,Spring代理方法是默认的代理方法。另一方面,测试使用的是其他Spring代理方法。我要和队友一起检查为什么要在那里。我相信应该使用默认的Spring代理方法。