Java Spring Boot Restcontroller RequestMapping执行了两次

我有一个带有RestController的Spring Boot应用程序和一个下载并传递图像的方法:

@RestController public class PictureController { @RequestMapping("/picture/{id}") public HttpEntity getImage(@PathVariable String id) { logger.info("Requested picture : >> " + id + " <<"); // !! Execute code for downloading !! // Create Headers... // return HttpEntity } } 

在日志文件中,我可以读到该方法执行两次 ,我不知道为什么。

如果我删除下载代码,它会按预期执行一次

是因为下载需要一秒钟吗?

下载代码是……

  byte[] response; try { URL url = new URL(....); InputStream in = new BufferedInputStream(url.openStream()); ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buf = new byte[1024]; int n = 0; while (-1 != (n = in.read(buf))) { out.write(buf, 0, n); } out.close(); in.close(); response = out.toByteArray(); 

我也试过几个像…的解决方案

 @RequestMapping(value = "/picture2/{id}", headers = "Accept=image/jpeg, image/jpg, image/png, image/gif") public @ResponseBody byte[] getArticleImage2(@PathVariable String id) { 

我认为HttpEntity可能存在问题,但这是相同的行为。 按预期工作,无需下载代码,但下载图像后会执行两次

这是我的应用程序严重的性能问题…… 🙁

这里有什么问题?

问题取决于用于测试RestController的浏览器。 我正在使用Firefox …而Firefox往往会在图像周围获得一些HTML。 但该方法不返回html,因此Firefox正在启动另一个请求…也是为了寻找一个favicon。

Internet Explorer例如并不关心它,并且该方法仅按预期执行一次!

所以我的问题不是一个真正的问题,因为稍后由RestController提供的我的图像将被嵌入到具有html和favicon的网站中。