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

时间:2018-12-01 13:36:22

标签: java spring

我有以下控制器和Service类,

  

UserController.java:

UserService.java

也遵循Service class

  

@Override public String getUserID(IContext requestContext, String userName) { String userID = null; List<User> users = createUser(context, userName); userID = <API>.getID(context, userList); return userID; } @Override public UserDetails getUserDetails(IContext context, String userID) { UserDetails userDetails = null; userDetails = <API>.getUserDetails(userID, context); return userDetails; } @Override public UserList getUserList(IContext context, String requestAsJSON) { JsonObject requestObj = new JsonParser().parse(requestAsJSON).getAsJsonObject(); String userName = requestObj.get("Name").getAsString(); UserCard userCard = createCard(userName); List<User> users = new ArrayList<>(); users.add(userCard); UserList userList = new UserList(); userList.setUsers(users); .. return userList; } .... private List<User> createUser(IContext context, String userName) { List<User> users = new ArrayList<>(); UserCard userCard = createCard(userName); users.add(userCard); return users; } private UserCard createCard(String userName) { UserCard userCard = new UserCard(); userCard.setOfficeID(12345); userCard.setAddress("Addr1"); userCard.setOffice(“Test”); return userCard; }

createCard

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

我想在“ / user / getUser”时{{1}},在“ / user / Booking”时获取此卡。我想获得有关创建吸气剂和吸气剂的帮助。

2 个答案:

答案 0 :(得分:1)

在服务中,您可以使用MapnameuserCard存储为键值对:

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;
}

答案 1 :(得分:1)

这两个是单独的请求。 REST 是无状态的,那么该怎么做呢?最佳选择可以是:您可以将在第一次请求时创建的数据传递到客户端。然后在第二次请求中,您的客户将通过 requestbody 提供此数据。您可以将数据放在静态变量上,但这不是一个好习惯。

您可以这样做:

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

当从客户端呼叫时,客户端应添加用户卡数据以进行请求。建立一个在 request 对象上接受 usercardata 的请求。可能是您的代码已经在执行此操作。