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;
|
|
}
|
|
}
|