刷赞网站推广永久,禅城网页设计,订餐网站怎么做,移动端游戏是什么意思实际项目中#xff0c;如果将该类信息放配置文件中的话#xff0c;一般会结合Nocas一起使用 将字典数据#xff0c;配置在 yml 文件中#xff0c;通过加载yml将数据加载到 Map中 Spring Boot 中 yml 配置、引用其它 yml 中的配置。# 在配置文件目录#xff08;如#xff…实际项目中如果将该类信息放配置文件中的话一般会结合Nocas一起使用 将字典数据配置在 yml 文件中通过加载yml将数据加载到 Map中 Spring Boot 中 yml 配置、引用其它 yml 中的配置。# 在配置文件目录如resources下新建application-xxx 必须以application开头的yml文件 多个文件用 , 号分隔不能换行 项目结构文件 application.yml
server:port: 8088application:name: VipSoft Env Demospring:profiles:include:dic # 在配置文件目录如resources下新建application-xxx 开头的yml文件 多个文件用 , 号分隔不能换行#性别字典
user-gender:0: 未知1: 男2: 女application-dic.yml 将字典独立到单独的yml文件中
#支付方式
pay-type:1: 微信支付2: 货到付款在 resources 目录下创建META-INF目录创建 spring.factories文件 Spring Factories是一种类似于Java SPI的机制它在META-INF/spring.factories文件中配置接口的实现类名称然后在程序中读取这些配置文件并实例化。 内容如下:
# Environment Post Processor
org.springframework.boot.env.EnvironmentPostProcessorcom.vipsoft.web.utils.ConfigUtilConfigUtil
package com.vipsoft.web.utils;import org.springframework.boot.SpringApplication;
import org.springframework.boot.context.properties.bind.BindResult;
import org.springframework.boot.context.properties.bind.Binder;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.PropertySource;
import org.springframework.util.Assert;public class ConfigUtil implements EnvironmentPostProcessor {private static Binder binder;private static ConfigurableEnvironment environment;public static String getString(String key) {Assert.notNull(environment, environment 还未初始化);return environment.getProperty(key, String.class, );}public static T T bindProperties(String prefix, ClassT clazz) {Assert.notNull(prefix, prefix 不能为空);Assert.notNull(clazz, class 不能为空);BindResultT result ConfigUtil.binder.bind(prefix, clazz);return result.isBound() ? result.get() : null;}/*** 通过 META-INF/spring.factories触发该方法的执行进行环境变量的加载*/Overridepublic void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {for (PropertySource? propertySource : environment.getPropertySources()) {if (propertySource.getName().equals(refreshArgs)) {return;}}ConfigUtil.environment environment;ConfigUtil.binder Binder.get(environment);}
}
DictVo
package com.vipsoft.web.vo;public class DictVO implements java.io.Serializable {private static final long serialVersionUID 379963436836338904L;/*** 字典类型*/private String type;/*** 字典编码*/private String code;/*** 字典值*/private String value;public DictVO(String code, String value) {this.code code;this.value value;}public String getType() {return type;}public void setType(String type) {this.type type;}public String getCode() {return code;}public void setCode(String code) {this.code code;}public String getValue() {return value;}public void setValue(String value) {this.value value;}
}
DefaultController
package com.vipsoft.web.controller;import com.vipsoft.web.utils.ConfigUtil;
import com.vipsoft.web.vo.DictVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;RestController
public class DefaultController {GetMapping(value /)public String login() {return VipSoft Demo !!!;}GetMapping(/list/{type})public ListDictVO listDic(PathVariable(type) String type) {LinkedHashMap dict ConfigUtil.bindProperties(type.replaceAll(_, -), LinkedHashMap.class);ListDictVO list new ArrayList();if (dict null || dict.isEmpty()) {return list;}dict.forEach((key, value) - list.add(new DictVO(key.toString(), value.toString())));return list;}
}
运行效果 单元测试
package com.vipsoft.web;import com.vipsoft.web.controller.DefaultController;
import com.vipsoft.web.utils.ConfigUtil;
import com.vipsoft.web.vo.DictVO;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;SpringBootTest
public class DicTest {AutowiredDefaultController defaultController;Testpublic void DicListTest() throws Exception {ListDictVO pay_type defaultController.listDic(pay-type);pay_type.forEach(p - System.out.println(p.getCode() p.getValue()));ListDictVO user_gender defaultController.listDic(user-gender);user_gender.forEach(p - System.out.println(p.getCode() p.getValue()));}Testpublic void getString() throws Exception {String includeYml ConfigUtil.getString(spring.profiles.include);System.out.println(application 引用了配置文件 》 includeYml);}
}