java – 将一些JSON文件加载到Spring Boot应用程序的最佳方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 将一些JSON文件加载到Spring Boot应用程序的最佳方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3472字,纯文字阅读大概需要5分钟。
内容图文
我即将创建一个Rest webservice应用程序,我需要在应用程序启动时加载存在于作为参数传递的文件夹中的所有JSON文件(在application.yml中先验),以便稍后在webservices的方法中使用它们bean列表(每个JSON文件对应一个bean).
一个样本,以进一步解释我的要求:
application.yml:
json.config.folder: /opt/my_application/json_configs
MyApplication.java:
package com.company;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
具有以下结构的JSON文件:
{
"key":"YYYYY",
"operator_list":[
{
"name":"operator1",
"configs":{
"id":"XXXXX1",
"path":"xxxx2"
}
},
{
"name":"operator2",
"configs":{
"id":"XXXXX1",
"passphrase":"xxxx2",
"user_id":"XXXX3",
"password":"XXXXX"
}
},
{
"name":"operator3",
"configs":{
"user_id":"XXXXX1"
}
}
]
}
RestAPI.java
@RestController
@RequestMapping("/my_app_url")
@PropertySource(value={"classpath:application.yml"})
public class RestAPI {
//Some fields
....
//Some methods
....
//Method that return operator list of a given context (correspond to the field "key" of the json file)
@RequestMapping("/getOperatorList")
public List<Operator> getOperatorList(@RequestParam(value = "context", defaultValue = "YYYYY") String context) throws Exception{
List<Operator> result = null;
//Here, i need to loop the objects , that are supposed to be initialized during application startup
//(but i I do not know yet how to do it) with data from JSON files
//to find the one that correspond to the context in parameter and return its operator list
return result;
}
}
ContextOperatorBean.java将包含先验的JSON文件信息:
package com.company.models;
import java.util.List;
public class ContextOperatorBean {
String key;
List<Operator> operator_list;
public ContextOperatorBean() {
}
public ContextOperatorBean(String key, List<PaymentMethod> operator_list) {
this.key = key;
this.operator_list = operator_list;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public List<Operator> getOperator_list() {
return operator_list;
}
public void setOperator_list(List<Operator> operator_list) {
this.operator_list = operator_list;
}
}
另一个名为Operator.java的类包含所有运算符信息.
是否有方法在应用程序启动时初始化包含所有JSON文件的信息的ContextOperatorBean对象列表,并在我的Web服务方法(RestAPI.java类)中使用它们?
解决方法:
不知道以下天真的实现是否满足“最佳”的标准,但您可以创建一个处理此责任的新服务,例如:
@Service
public class OperatorsService {
@Value("${json.config.folder}")
String jsonConfigFolder;
List<ContextOperatorBean> operators = new ArrayList<>();
@PostConstruct
public void init() throws IOException {
ObjectMapper jsonMapper = new ObjectMapper();
for (File jsonFile : getFilesInFolder(jsonConfigFolder)) {
// deserialize contents of each file into an object of type
ContextOperatorBean operator = jsonMapper.readValue(jsonFile, new TypeReference<List<ContextOperatorBean>>() {});
operators.add(operator);
}
}
public List<ContextOperatorBean> getMatchingOperators(String context) {
return operators.stream().filter(operator -> checkIfMatches(operator, context)).collect(Collectors.toList());
}
private boolean checkIfMatches(ContextOperatorBean operator, String context) {
// TODO implement
return false;
}
private File[] getFilesInFolder(String path) {
// TODO implement
return null;
}
}
注意:省略处理故障或意外情况以及一些实施细节.
然后在控制器中@Autowire并调用getMatchingOperators()来仅过滤匹配的条目.
内容总结
以上是互联网集市为您收集整理的java – 将一些JSON文件加载到Spring Boot应用程序的最佳方法全部内容,希望文章能够帮你解决java – 将一些JSON文件加载到Spring Boot应用程序的最佳方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。