Java 资源处理程序未禁用缓存?

Java 资源处理程序未禁用缓存?,java,spring,spring-boot,Java,Spring,Spring Boot,我已经创建了一个SpringBoot2和angular应用程序(书店应用程序-管理员可以添加新书或编辑现有书籍)。我想提供保存在resources/static/images路径中的图像。当我通过api调用添加新图像时,效果非常好,但是当我尝试用不同的图像替换图像时(当我尝试编辑书籍时),当我通过文件资源管理器检查文件夹时,图像会被替换为新图像,但当我访问链接时http://localhost:8181/images/16.png它显示旧图像。在eclipse中,如果我右键单击项目并单击刷新,则

我已经创建了一个SpringBoot2和angular应用程序(书店应用程序-管理员可以添加新书或编辑现有书籍)。我想提供保存在
resources/static/images
路径中的图像。当我通过api调用添加新图像时,效果非常好,但是当我尝试用不同的图像替换图像时(当我尝试编辑书籍时),当我通过文件资源管理器检查文件夹时,图像会被替换为新图像,但当我访问链接时
http://localhost:8181/images/16.png
它显示旧图像。在eclipse中,如果我右键单击项目并单击刷新,则
http://localhost:8181/images/16.png
显示正确的图像

为了防止这个问题,我编写了下面的代码,这样可以防止缓存
静态/图像
,但它不起作用

--资源处理程序

@Configuration
public class WebConfig  implements WebMvcConfigurer{

    
      @Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
      
      // Register resource handler for images
          System.out.println("indisde cache images");
      registry.addResourceHandler("/images/**").addResourceLocations("classpath:/static/images/").setCachePeriod(0);
      }
     
    
}
@Configuration
public class AdditionalResourceWebConfiguration implements WebMvcConfigurer {

  @Override
  public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/media/**").addResourceLocations("file:///" + System.getProperty("user.dir") + "/src/main/media/");
  }
}
--弹簧应用

@springboot应用程序
公共类Bookstore应用程序实现CommandLineRunner{
@自动连线
用户服务用户服务;
公共静态void main(字符串[]args){
run(BookStoreApplication.class,args);
}
@凌驾
公共无效运行(字符串…args)引发异常{
用户user2=新用户();
user2.setUserName(“admin”);
user2.setPassword(SecurityUtility.passwordEncoder().encode(“admin”);
user2.setEmail(“admin@admin.com");
user2.setEnabled(true);
user2.setFirstName(“adminFirstName”);
user2.setLastName(“adminLastName”);
用户2.设置电话(“223456789”);
Role role2=新角色();
role2.setRoleId((长)2);
角色2.setRoleName(“角色管理”);
UserRole userRole2=新的UserRole(user2,role2);
Set userRoles2=new HashSet();
userRoles2.add(userRole2);
CreateUser(user2,userRoles2);
}
}
--控制器

@RequestMapping(value = "/add/image", method = RequestMethod.POST)
public ResponseEntity uploadImage(@RequestParam(name = "id") Long id, HttpServletRequest request,
        HttpServletResponse response) throws IOException {

    try {

        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Iterator<String> imageNames = multipartRequest.getFileNames();
        System.out.println(imageNames);
        MultipartFile imageMutipart = multipartRequest.getFile(imageNames.next());
        byte[] imageBytes = imageMutipart.getBytes();

        String imageNameNew = id + ".png";

        BufferedOutputStream bout = new BufferedOutputStream(
                new FileOutputStream(new File("src/main/resources/static/images/" + imageNameNew)));
        bout.write(imageBytes);
        bout.flush();
        bout.close();
        return new ResponseEntity("Upload success", HttpStatus.OK);
    } catch (Exception e) {

        return new ResponseEntity("Upload failed", HttpStatus.BAD_REQUEST);
    }

}

我能够使用下面的资源处理程序解决这个问题

@Configuration
public class WebConfig  implements WebMvcConfigurer{

    
      @Override public void addResourceHandlers(ResourceHandlerRegistry registry) {
      
      // Register resource handler for images
          System.out.println("indisde cache images");
      registry.addResourceHandler("/images/**").addResourceLocations("classpath:/static/images/").setCachePeriod(0);
      }
     
    
}
@Configuration
public class AdditionalResourceWebConfiguration implements WebMvcConfigurer {

  @Override
  public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/media/**").addResourceLocations("file:///" + System.getProperty("user.dir") + "/src/main/media/");
  }
}