java - 如何避免此类中刷新 token 的重复代码?

标签 java spring

我有一个 Service,它使用 Client 类进行各种 API 调用。 API 需要一个可能会过期的 token 。此 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 block 刷新每个方法的 token 的最佳方法是什么?换句话说,有一个共同的地方来做这件事。

如果重要的话,这是一个 Spring 项目,Client 在内部使用 @Autowired RestTemplate 来调用 API。

最佳答案

类似这样的事情:

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

关于java - 如何避免此类中刷新 token 的重复代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28913167/

相关文章:

java - 如何在新添加的文本末尾自动显示插入符号到 java 中的 textArea?

java - 从 HttpURLConnection InputStream 获取不正确的输出

spring - Spring MVC 如何处理多个用户

java - 如何读取以零开头的整数?

java - 使用bat命令永久设置java环境变量值

java - 如何在基于eclipse的Spring项目中添加bean配置文件?

java - 如何使用字符串参数向 spring boot rest 端点添加验证?

java - Spring MVC 不记录所有异常

Java Spring View 格式化货币

java - http ://displaytag. sf.net 无法在 web.xml 或 jar 文件中解析