我有一个简单的问题-springbootapplication看不到我的控制器-更奇怪的是-只有三个控制器中的一个。
我有usercontroller,walletcontroller和dashboardcontroller-这个对我的应用程序不可见。
我已经做的是:
每个带有控制器的包都在主包下,我的springbootapplication.class在主包下,
我试着用@componentscan注解主springbootapplication.class,同时使用basepackages和basepackageclasses,
没有其他bean-应该在@component上加注解,我删除了它们并将方法移到了dashboardservice.class中
这是我的控制器,它不可见: Jmeter 板控制器
这是我的包结构(似乎是对的):包结构
谢谢你的帮助!
编辑:
使用第三方api来获取所需的数据可能很重要
在这种方法中,我使用url:
private String getNbpJson(String url) {
return new RestTemplate().getForObject(url, String.class);
}
private CurrentRateDTO getCurrentExchangeRate(String json) throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(json);
String code = node.get("code").toString();
String date = node.get("rates").get(0).get("effectiveDate").toString();
double bid = node.get("rates").get(0).get("bid").asDouble();
double ask = node.get("rates").get(0).get("ask").asDouble();
return new CurrentRateDTO(code, date, bid, ask);
}
然后在exchangeservice中,这是我的url
@Service
public class ExchangeRateService implements IExchangeRateService {
private static final Logger logger = LoggerFactory.getLogger(ExchangeRateService.class);
private String NBP_CURRENT_RATE_URL = "http://api.nbp.pl/api/exchangerates/rates/c/eur/2020-12-11/?format=json";
另外。。。当我将方法从dashboardcontroller移动到walletcontroller时(这很有效)
我发现的另一件事是,只有使用第三方api的方法不起作用。基本上,我从上面的url检索数据-我得到特定的字段,创建一个填充字段的对象。
可能是从第三方检索数据然后在我的应用程序中实现的问题吗?
我现在没有更多的想法。。。
2条答案
按热度按时间9nvpjoqh1#
可能您的控制器已注册,但您键入的url略有不同。尝试此属性
logging.level.org.springframework.web.servlet.mvc.method.annotation: TRACE
并在应用程序启动时检查控制器是否在其他url下注册。尝试将此添加到控制器
y1aodyip2#
好吧,我可能发现了问题。。。在我有3个控制器之前:
我把上面的改成
所以,基本上我去掉了底端?端点?对于每个控制器,现在它工作了。。。三个restcontrollers中的基本端点似乎太多,而第三个端点不可用,但我不知道这是真的(我打赌不是)。
为什么会这样,有人能解释控制器的行为吗?谢谢你的解释。