不知道以下的天真的实现是否满足“最佳”的标准,但是您可以创建一个新的服务来处理这种责任,例如:
@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()
仅过滤匹配的条目。