我们经常在项目开发中遇到项目数据初始化的问题,例如一些超管,管理员账号;或者地图包,电话号码包,之类的东西。放到到一个json文件里面(大的数据字典包可以放到搜索引擎里面,改情况本文不做讨论),然后项目启动时候就可以读取,便于我们使用
- initData.json 文件
{"appcInitData":{"coinTaskInitLogo":{"newMemberGuide" : "https,://123.cn/123/saas_123.png"}}
}
- InitDataProperties.java (Json 文件映射类)
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class InitDataProperties {private AppcInitData AppcInitData;@Datapublic class AppcInitData {private CoinTaskInitLogo coinTaskInitLogo;@Datapublic class CoinTaskInitLogo {private String newMemberGuide;}}
}
- InitProjectData.java(数据读取接口)
public interface InitProjectData {InitDataProperties PrepareAppcInitData();
}
- InitProjectDataImpl.java (实现类)
json文件放在了resource/doc 文件目录下
@Component
public class InitProjectDataImpl implements InitProjectData{@Overridepublic InitDataProperties PrepareAppcInitData() {String fileSeparator = File.separator;try {File file = new File(this.getClass().getResource(fileSeparator + "doc" + fileSeparator + "initData.json").getFile());ObjectMapper objectMapper = new ObjectMapper();InitDataProperties initDataProperties = objectMapper.readValue(file, InitDataProperties.class);System.out.println(initDataProperties.toString());return initDataProperties;} catch (IOException e) {e.printStackTrace();}return null;}
}
- 在PostConstruct 项目初始化时候,调用并初始化
@AutowiredInitProjectData InitProjectData;@PostConstructpublic void init(){InitProjectData.PrepareAppcInitData();}
测试

参考资料 & 致谢
[1] Spring.io



![[ARM+Linux] 基于wiringPi库的串口通信](https://img-blog.csdnimg.cn/9ee83239c1034c5f90b6f223c348f377.png)








