gpt4 book ai didi

rest - Spring boot RestController 不能与实现接口(interface)的类一起使用

转载 作者:行者123 更新时间:2023-12-05 08:09:00 27 4
gpt4 key购买 nike

我正在尝试实现一个 Springboot REST api。并且我在其中定义@RestController 的类似乎无法正常工作。我有一个名为 MyService 的类,它实现了所有抽象方法。我在类声明的顶部添加了 @RestController 注释,并为我需要从 rest 调用中调用的方法添加了 @RequestMapping 注释。但这不起作用。我用一个没有实现任何接口(interface)但工作正常的类进行了尝试。

这是代码

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();
}

我从 postman 那里得到的错误是

{"timestamp":1489688505136,"status":404,"error":"Not Found","message":"No message available","path":"/age"}

最佳答案

我在契约(Contract)测试期间遇到了同样的问题。我很困惑,因为还有一些其他的 @RestController 实现了它们的接口(interface)并且它们被正确映射。

然后我以生产模式启动我的应用程序,并意识到 Controller 已正确映射。非常奇怪!

正准备删除接口(interface),突然想到了Spring代理。不知道为什么它出现在我的脑海里。然后我检查了我的 src/test/application.properties 并意识到它有这个属性 spring.aop.proxy-target-class=false。我删除了它,现在一切都按预期工作。

现在这一切对我来说都有意义了。 src/main/application.properties 没有那个属性。因此,在生产模式下,Spring 代理方法是默认方法。另一方面,测试是使用其他 Spring 代理方法。我要和我的队友核实为什么它在那里。我相信应该使用默认的 Spring 代理方法。

关于rest - Spring boot RestController 不能与实现接口(interface)的类一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42839364/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com