houzhongjian
2025-04-10 152781b05131e48bf6e94d71cc72dd54af52a3fb
iailab-framework/iailab-common-web/src/main/java/com/iailab/framework/web/config/WebProperties.java
对比新文件
@@ -0,0 +1,66 @@
package com.iailab.framework.web.config;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
@ConfigurationProperties(prefix = "iailab.web")
@Validated
@Data
public class WebProperties {
    @NotNull(message = "APP API 不能为空")
    private Api appApi = new Api("/app-api", "**.controller.app.**");
    @NotNull(message = "Admin API 不能为空")
    private Api adminApi = new Api("/admin-api", "**.controller.admin.**");
    @NotNull(message = "Admin UI 不能为空")
    private Ui adminUi;
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Valid
    public static class Api {
        /**
         * API 前缀,实现所有 Controller 提供的 RESTFul API 的统一前缀
         *
         *
         * 意义:通过该前缀,避免 Swagger、Actuator 意外通过 Nginx 暴露出来给外部,带来安全性问题
         *      这样,Nginx 只需要配置转发到 /api/* 的所有接口即可。
         *
         * @see IailabWebAutoConfiguration#configurePathMatch(PathMatchConfigurer)
         */
        @NotEmpty(message = "API 前缀不能为空")
        private String prefix;
        /**
         * Controller 所在包的 Ant 路径规则
         *
         * 主要目的是,给该 Controller 设置指定的 {@link #prefix}
         */
        @NotEmpty(message = "Controller 所在包不能为空")
        private String controller;
    }
    @Data
    @Valid
    public static class Ui {
        /**
         * 访问地址
         */
        private String url;
    }
}