Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java控制器和服务-在服务中实现Getter和Setter_Java_Spring - Fatal编程技术网

Java控制器和服务-在服务中实现Getter和Setter

Java控制器和服务-在服务中实现Getter和Setter,java,spring,Java,Spring,我有以下控制器和服务类 UserController.java: 当前,createCard方法在获取用户(“/user/getUser”)和预订(“/user/booking”)时调用了两次 我想createCardwhile“/user/getUser”并在“/user/Booking”时获得此卡。我想获得创建getter和setter的帮助。在您的服务中,您可以使用映射将名称和用户卡存储为键值对: static Map<String , UserCard> userCardIn

我有以下控制器和服务类

UserController.java:

当前,
createCard
方法在获取用户(“/user/getUser”)和预订(“/user/booking”)时调用了两次


我想
createCard
while“/user/getUser”并在“/user/Booking”时获得此卡。我想获得创建getter和setter的帮助。

在您的服务中,您可以使用
映射
名称
用户卡
存储为键值对:

static Map<String , UserCard> userCardInfo = new HashMap<>();

//inside createUser populate it

private List<User> createUser(IContext context, String userName) {
    List<User> users = new ArrayList<>();
    UserCard userCard = createCard(userName);
    users.add(userCard);
    this.userCardInfo.put(userName , userCard);
    return users;
}

//and inside getUserList retrieve from that map

public UserList getUserList(IContext context, String requestAsJSON) {
    JsonObject requestObj = new JsonParser().parse(requestAsJSON).getAsJsonObject();
    String userName = requestObj.get("Name").getAsString();
    UserCard userCard = null;
    if(this.userCardInfo.containsKey(userName)) {
        userCard = this.userCardInfo.get(userName);
    } else {
        userCard = createCard(userName);
    }

    List<User> users = new ArrayList<>();
    users.add(userCard);
    UserList userList = new UserList();
    userList.setUsers(users);
    return userList;
}
staticmap userCardInfo=newhashmap();
//在createUser内部填充它
私有列表createUser(IContext上下文,字符串用户名){
列表用户=新建ArrayList();
UserCard UserCard=createCard(用户名);
添加(用户卡);
this.userCardInfo.put(用户名、用户卡);
返回用户;
}
//在getUserList中,从该映射中检索
公共用户列表getUserList(IContext上下文,字符串requestAsJSON){
JsonObject requestObj=新的JsonParser().parse(requestAsJSON.getAsJsonObject();
字符串userName=requestObj.get(“Name”).getAsString();
UserCard UserCard=null;
if(this.userCardInfo.containsKey(用户名)){
userCard=this.userCardInfo.get(用户名);
}否则{
userCard=createCard(用户名);
}
列表用户=新建ArrayList();
添加(用户卡);
UserList UserList=new UserList();
userList.setUsers(用户);
返回用户列表;
}

在您的服务中,您可以使用
映射
名称
用户卡
存储为键值对:

static Map<String , UserCard> userCardInfo = new HashMap<>();

//inside createUser populate it

private List<User> createUser(IContext context, String userName) {
    List<User> users = new ArrayList<>();
    UserCard userCard = createCard(userName);
    users.add(userCard);
    this.userCardInfo.put(userName , userCard);
    return users;
}

//and inside getUserList retrieve from that map

public UserList getUserList(IContext context, String requestAsJSON) {
    JsonObject requestObj = new JsonParser().parse(requestAsJSON).getAsJsonObject();
    String userName = requestObj.get("Name").getAsString();
    UserCard userCard = null;
    if(this.userCardInfo.containsKey(userName)) {
        userCard = this.userCardInfo.get(userName);
    } else {
        userCard = createCard(userName);
    }

    List<User> users = new ArrayList<>();
    users.add(userCard);
    UserList userList = new UserList();
    userList.setUsers(users);
    return userList;
}
staticmap userCardInfo=newhashmap();
//在createUser内部填充它
私有列表createUser(IContext上下文,字符串用户名){
列表用户=新建ArrayList();
UserCard UserCard=createCard(用户名);
添加(用户卡);
this.userCardInfo.put(用户名、用户卡);
返回用户;
}
//在getUserList中,从该映射中检索
公共用户列表getUserList(IContext上下文,字符串requestAsJSON){
JsonObject requestObj=新的JsonParser().parse(requestAsJSON.getAsJsonObject();
字符串userName=requestObj.get(“Name”).getAsString();
UserCard UserCard=null;
if(this.userCardInfo.containsKey(用户名)){
userCard=this.userCardInfo.get(用户名);
}否则{
userCard=createCard(用户名);
}
列表用户=新建ArrayList();
添加(用户卡);
UserList UserList=new UserList();
userList.setUsers(用户);
返回用户列表;
}

这两个请求是独立的REST是无状态的,因此如何才能做到这一点?最好的选择是,您可以将第一次请求时创建的数据传递给客户端。然后,对于第二个请求,您的客户将使用请求主体提供此数据。您可以将数据放在静态变量上,但这不是一个好的做法

您可以这样做:

if (UserID != null) {
            UserDetails userDetails = userService.getUserDetails(context, userID);
            responseMap.put("userDetails",userDetails);
        }

当从客户端调用时,客户端应向请求添加用户卡数据。在请求对象上生成将接受用户卡数据的请求。可能是您的代码已经在执行此操作。

这两个是单独的请求REST是无状态的,因此如何才能做到这一点?最好的选择是,您可以将第一次请求时创建的数据传递给客户端。然后,对于第二个请求,您的客户将使用请求主体提供此数据。您可以将数据放在静态变量上,但这不是一个好的做法

您可以这样做:

if (UserID != null) {
            UserDetails userDetails = userService.getUserDetails(context, userID);
            responseMap.put("userDetails",userDetails);
        }

当从客户端调用时,客户端应向请求添加用户卡数据。在请求对象上生成将接受用户卡数据的请求。可能是您的代码已经在执行此操作。

我不建议为
UserCard
对象创建一个setter,因为您无法确定REST API将以某种顺序调用,例如首先调用
/user/getUser
,然后再调用
/user/Booking
。我建议将整个
User
UserCard
对象作为请求负载传递给
/User/Booking
。使用setter的第二个问题是,您无法预测在
/user/Booking
之前将调用多少次
/user/getUser
方法,因此您的用户实际上可以在使用它之前进行更新。我认为缓存还有一个使用期限,它不适合您的情况吗?我不建议为
UserCard
对象创建一个setter,因为您无法确定REST API将以某种顺序调用,比如首先调用
/user/getUser
,然后再调用
/user/Booking
。我建议将整个
User
UserCard
对象作为请求负载传递给
/User/Booking
。使用setter的第二个问题是,您无法预测在
/user/Booking
之前将调用多少次
/user/getUser
方法,因此您的用户实际上可以在使用它之前进行更新。我认为缓存还有一个使用期限,它不适合您的情况吗?需要从responseMap检索吗?是的。如果希望将hashmap保留为返回类型,那么可以在第一个requestset responseMap期间将卡数据放在hashmap上,并像这样传递它:IUserResponse userresponse=userService.createBooking(RequestAsJSON,context,requestMap);我希望,这是正确的方法并且会起作用。你能分享你的预订服务吗?createBooking方法?然后,我可以告诉您在返回响应时需要更新什么,并通过您正在使用的转换器将其转换为JSON数组。所以,客户端可以解析您的响应映射,并使用必要的数据作为RequestAsJSON字段构建RequestAsJSON数据。您不需要在请求中接受额外的参数responseMap。但这取决于你,你可以发送两者,也可以使用相同的参数发送。需要吗