为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot:@Autowired 记住并为下一个请求保存相同的对象

Spring Boot:@Autowired 记住并为下一个请求保存相同的对象

holdtom 2021-08-19 21:13:07
我正在开发一个 Spring Boot 应用程序,例如在一个 API 下方:@AutowiredGetUserIdByUserNameBase getUserIdByUserNameBase;@PostMapping(value = "/UserName")    public GetUserIdByUserNameOutput getUserIdByUserName(@RequestBody String userName) {        GetUserIdByUserNameInput GetUserIdByUserNameInput = new GetUserIdByUserNameInput(userName);    getUserIdByUserNameBase.setGetUserIdByUserNameInput(GetUserIdByUserNameInput);    MsgStatus msgStatus = getUserIdByUserNameBase.execute();    if (msgStatus == MsgStatus.ERROR_MSG) {        LOG.error("UserRestController,getUserIdByUserName : Internal System Error");    }    return getUserIdByUserNameBase.getGetUserIdByUserNameOutput();}我的问题出现在具有相同 API 的第二个/下一个请求中(例如上面的那个)“GetUserIdByUserNameBase”仍然记得第一次点击时保存的所有数据!。public class GetUserIdByUserNameBase extends ServiceBase {    private final Logger LOG = LogManager.getLogger(GetUserIdByUserNameBase.class);    private GetUserIdByUserNameInput getUserIdByUserNameInput;    private GetUserIdByUserNameOutput getUserIdByUserNameOutput;    private ResultStatus resultStatus;    private String userName;    private TBUSER_INFO userInfo;在我的例子中,“getUserIdByUserNameOutput”仍然保存来自 API 的第一次命中的先前数据,直到我覆盖内容或将其标记为空。1 . GetUserIdByUserNameBase.setGetUserIdByUserNameOutput(new GetUserIdByUserNameOutput);要么GetUserIdByUserNameBase.getGetUserIdByUserNameOutput().setX(Null);但在这里我创建了一个问题,因为我为每个新的 API 请求创建了一个新的“GetUserIdByUserNameOutput”实例,并且对系统来说效率不高且繁重......如果我总结了我真正想知道的内容,我如何告诉@Autowired 在 API 的每个新请求上弹回/搁置对象,而不是使用或覆盖它从第一个请求中记住的内容。?
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

在大多数情况下,Spring bean 不应该有状态。bean 是可重用的类的单个实例。不要使用二传手!

而不是这样做:

getUserIdByUserNameBase.setGetUserIdByUserNameInput(GetUserIdByUserNameInput);

您需要在单个方法中进行计算,或者在 bean 中实例化一个新对象并返回新对象,例如

return getUserIdByUserNameBase.getGetUserIdByUserName(GetUserIdByUserNameInput);

或类似的东西

return getUserIdByUserNameBase.buildUsernameThing(GetUserIdByUserNameInput).execute();


查看完整回答
反对 回复 2021-08-19
  • 1 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信