如何避免在此类中刷新令牌的重复代码?

时间:2015-03-07 09:03:38

标签: java spring

我有Service使用Client类进行各种API调用。 API需要token才能过期。此token保存在数据库中,因此我只在新标记到期时获取它。我正在寻找一种干净的方式来编写这段代码。目前,伪代码看起来像这样:

public class Service {
    @Autowired
    private Client client;

    public void createUser() {
        Token token = readTokenFromDb();
        if (token.isExpired()) {
            token = client.readToken();
            save(token);
        }
        client.createUser(token);
    }

    public void readUsers() {
        Token token = readTokenFromDb();
        if (token.isExpired()) {
            token = client.readToken();
            save(token);
        }
        client.readUsers(token);
    }

    public void updateUsers() {
        // similar code
    }
    // many other similar methods
}

避免if块为每个方法刷新令牌的最佳方法是什么?换句话说,有一个共同的地方去做。

如果重要,这是一个Spring项目,而Client正在使用@Autowired RestTemplate来调用API。

1 个答案:

答案 0 :(得分:3)

这样的事情:

private Token checkToken(){
    Token token = readTokenFromDb();
    if (token.isExpired()) {
        token = client.readToken();
        save(token);
    }
    return token;
}

方法:

public void readUsers() {
    Token token = checkToken();
    client.readUsers(token);
}