정적 파일에 한해서 캐시 무효화를 하므로 WebMvcConfigurer 객체의 addResourceHandlers 메서드를 이용한다. addResourceHandlers 는 정적 파일에 관한 응답 설정을 관리한다.

@Configuration
public class CacheBustingWebConfig implements WebMvcConfigurer {

    public static final String PREFIX_STATIC_RESOURCES = "/resources/";
    private static final CacheControl RESOURCE_CACHE_CONTROL = CacheControl.maxAge(Duration.ofDays(365)).cachePublic();

    private final ResourceVersion version;

    @Autowired
    public CacheBustingWebConfig(ResourceVersion version) {
        this.version = version;
    }

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler(PREFIX_STATIC_RESOURCES + version.getVersion() + "/**")
                .addResourceLocations("classpath:/static/")
                .setCacheControl(RESOURCE_CACHE_CONTROL)
                .resourceChain(false)
                .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"));
    }
}

정적 파일을 응답할 때 캐시 설정도 추가하였다.

https://www.baeldung.com/cachable-static-assets-with-spring-mvc