Jay
8 天以前 eca625c35d5ed64c98277d2f83963e46438f50ce
提交 | 用户 | 时间
e7c126 1 package com.iailab.framework.web.config;
H 2
3 import lombok.AllArgsConstructor;
4 import lombok.Data;
5 import lombok.NoArgsConstructor;
6 import org.springframework.boot.context.properties.ConfigurationProperties;
7 import org.springframework.validation.annotation.Validated;
8 import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
9
10 import javax.validation.Valid;
11 import javax.validation.constraints.NotEmpty;
12 import javax.validation.constraints.NotNull;
13
14 @ConfigurationProperties(prefix = "iailab.web")
15 @Validated
16 @Data
17 public class WebProperties {
18
19     @NotNull(message = "APP API 不能为空")
20     private Api appApi = new Api("/app-api", "**.controller.app.**");
21     @NotNull(message = "Admin API 不能为空")
22     private Api adminApi = new Api("/admin-api", "**.controller.admin.**");
23
24     @NotNull(message = "Admin UI 不能为空")
25     private Ui adminUi;
26
27     @Data
28     @AllArgsConstructor
29     @NoArgsConstructor
30     @Valid
31     public static class Api {
32
33         /**
34          * API 前缀,实现所有 Controller 提供的 RESTFul API 的统一前缀
35          *
36          *
37          * 意义:通过该前缀,避免 Swagger、Actuator 意外通过 Nginx 暴露出来给外部,带来安全性问题
38          *      这样,Nginx 只需要配置转发到 /api/* 的所有接口即可。
39          *
40          * @see IailabWebAutoConfiguration#configurePathMatch(PathMatchConfigurer)
41          */
42         @NotEmpty(message = "API 前缀不能为空")
43         private String prefix;
44
45         /**
46          * Controller 所在包的 Ant 路径规则
47          *
48          * 主要目的是,给该 Controller 设置指定的 {@link #prefix}
49          */
50         @NotEmpty(message = "Controller 所在包不能为空")
51         private String controller;
52
53     }
54
55     @Data
56     @Valid
57     public static class Ui {
58
59         /**
60          * 访问地址
61          */
62         private String url;
63
64     }
65
66 }