引用:
最近在写前端项目的时候,需要跳转一些链接,打开新的页面,由于测试环境和正式环境的地址都有所不同,于是我通过在配置文件里面进行配置链接,通过接口进行动态的访问获取不同的链接。因为每次获取的链接地址有所不同,我又不想 一直使用if else 进行判断。于是想到了使用枚举类配和 spring 组件 来 进行优化。
具体代码如下:
LectureUrl 枚举类:
@Getter
public enum LectureUrl {
TYPE1("1"),
TYPE2("2"),
TYPE3("3");
private final String code;
LectureUrl(String code) {
this.code = code;
}
public String getConfigValue() {
return LoaderConfig.CONFIG_MAP.get(this.code);
}
public static String getConfigByCode(String code) {
if (StrUtil.isBlank(code)) {
throw new BusinessException("参数不能为空");
}
for (LectureUrl myEnum : LectureUrl.values()) {
if (myEnum.getCode().equals(code)) {
return myEnum.getConfigValue();
}
}
return null; // 如果找不到,返回 null 或自定义异常
}
}
LoaderConfig 读取配置文件
@Component
public class LoaderConfig {
@Value("${lecture.publishLectureUrl}")
private String publishLectureUrl;
@Value("${lecture.invitedApplicationUrl}")
private String invitedApplicationUrl;
@Value("${lecture.lectureChangeUrl}")
private String lectureChangeUrl;
@Value("${ly.weda.host}")
private String host;
public static final Map<String, String> CONFIG_MAP = new HashMap<>();
@PostConstruct
public void init() {
CONFIG_MAP.put("1", publishLectureUrl);
CONFIG_MAP.put("2", invitedApplicationUrl);
CONFIG_MAP.put("3", host + lectureChangeUrl);
}
}
调用:
public String getLecturePageUrl(String type) {
return LectureUrl.getConfigByCode(type);
}