【发布时间】:2021-03-23 20:00:27
【问题描述】:
我有一个简单的问题 - SpringBootApplication 看不到我的控制器 - 更奇怪的是 - 只有三个之一。
我有 UserController、WalletController 和 DashboardController - 这对我的应用程序不可见。
我已经做的是:
- 每个带有控制器的包都在主包下,我的 SpringBootApplication.class 在哪里,
- 我尝试使用 basePackages 和 basePackageClasses 用 @ComponentScan 注释主 SpringBootApplication.class,
- 没有其他 bean - 应该注释 @Component,我删除它们并将方法移动到我的 DashboardService.class
这是我的控制器,不可见: DashboardController
这是我的包结构(似乎是对的):Package Structure
感谢您的帮助!
编辑:
我使用第三方 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 中检索数据 - 我获取特定字段,创建一个填充字段的对象。
从第三方检索数据然后在我的应用中实施可能会出现问题吗?
我暂时没有更多的想法......
【问题讨论】:
-
默认情况下,如果 bean 中只有一个
public构造函数,它将由 Spring 通过构造函数注入自动装配,不需要显式的@Autowired注释。 -
你试过
@SpringBootApplication(scanBasePackages = {"pl.agn.exchange"})吗? -
是的,我已经尝试过所有与扫描包相关的事情 - 因此我不知道可能出了什么问题以及为什么会发生这种情况。
标签: java spring-boot rest spring-restcontroller