package com.yami.shop.common.config;

import com.yami.shop.common.util.ImgUploadUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 资源配置类
 * 该类实现了`WebMvcConfigurer`接口，用于自定义Spring MVC的相关配置，在这里主要是配置了项目中图片资源的访问路径映射，
 * 使得通过特定的URL路径能够访问到服务器上实际存储图片的位置，方便在网页等前端展示图片资源。
 *
 * @author TRACK
 */
@Configuration
// 使用 @Configuration 注解声明该类是一个配置类，Spring会自动扫描并加载该类中的配置信息，用于对Spring容器进行相关配置
public class ResourceConfigAdapter implements WebMvcConfigurer {

    @Autowired
    // 通过依赖注入获取ImgUploadUtil工具类对象，该工具类可能用于获取图片上传的路径等相关信息
    private ImgUploadUtil imgUploadUtil;

    /**
     * 配置资源处理器的方法
     * 该方法用于添加资源处理器的配置，通过`ResourceHandlerRegistry`对象来注册资源访问路径与实际资源存储位置的映射关系，
     * 在这里是将以`/mall4j/img/`开头的URL路径映射到服务器上实际存储图片的文件路径（通过`ImgUploadUtil`获取的上传路径），
     * 这样当客户端通过对应的URL请求图片资源时，Spring MVC能够正确地找到并返回相应的图片文件。
     *
     * @param registry 资源处理器注册表对象，用于注册资源访问路径与实际资源存储位置的映射关系，可添加多个映射配置。
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/mall4j/img/**")
               .addResourceLocations("file:" + imgUploadUtil.getUploadPath());
    }
}