gpt4 book ai didi

java - (Spring) 我可以在循环内使用依赖注入(inject)吗?

转载 作者:行者123 更新时间:2023-12-02 12:00:42 26 4
gpt4 key购买 nike

我目前正在开发一个 Spring Boot 应用程序,该应用程序允许用户将类别保存到数据库中。我可以让我的代码“工作”,但是,我认为它限制了我可以做的测试量,因此我的问题。

Controller 接收类别列表。 Controller 迭代这些类别,验证它们,并根据它们是否有效,将它们保存到数据库中。 Controller 最终返回一个消息列表,以便接收者可以识别哪个类别已被接受或拒绝等。

我有一个模型消息列表(List),在每次迭代时, Controller 实例化一个新的模型消息(new ModelMessage())并最终将其添加到列表中。 有没有办法在每次迭代时注入(inject)新的 ModelMessage 还是我需要使用 new 关键字?如果我确实使用 new 关键字,我觉得这限制了我的可测试性/将我的 Controller 与模型消息紧密耦合。

Controller :

@PostMapping("/category")
public String saveCategoryModelToDatabase(@RequestBody CategoryModelWrapper categoryModelWrapper){
List<CategoryModel> categoryModelList = categoryModelWrapper.getCategoryModelList();
modelMessageList.clear();

for(CategoryModel categoryModel : categoryModelList){
//Resetting model
modelMessage = new ModelMessage(); //This tightly couples my method to the ModelMessage class, which is bad for testing?
//@Autowired modelMessage; <-- something like this? Inject a new ModelMessage with each iteration.
modelMessage.setName(categoryModel.getName());

//Resetting categoryModelErrors
Errors categoryModelErrors = new BeanPropertyBindingResult(categoryModel, "categoryModel");
categoryModelValidator.validate(categoryModel, categoryModelErrors);


if(categoryModelErrors.hasErrors()){
modelMessage.setStatus(ModelMessageStatusEnum.REJECTED);
modelMessage.setReason(MODEL_MESSAGE_0004);
}

if(categoryModelService.save(categoryModel)){
modelMessage.setStatus(ModelMessageStatusEnum.ACCEPTED);
}
else{
modelMessage.setStatus(ModelMessageStatusEnum.REJECTED);
modelMessage.setReason(MODEL_MESSAGE_0005);
}
modelMessageList.add(modelMessage);
}

return gson.toJson(modelMessageList);
}

对收件人的响应示例:

[{"name":"Arts","status":"ACCEPTED"},{"name":"Business","status":"ACCEPTED"},{"name":"Gaming","status":"ACCEPTED"},{"name":"Deals","status":"REJECTED","reason":"Category rejected because of an unexpected exception, i.e. possibly due to duplicate keys."}]

感谢您的帮助:)

最佳答案

假设您有权访问 ApplicationContext,您可以将其用作 ModelMessage 的工厂。但是,这真的有必要吗?

关于java - (Spring) 我可以在循环内使用依赖注入(inject)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47273736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com