我有一个 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/