我尝试为 REST 服务创建自己的基于 token 的授权。这是我的 TokenService:
@Component
public class TokenService {
...
private Set<Token> tokens;
private SecureRandom random;
...
public TokenService() {
this.tokens = new HashSet<Token>();
this.random = new SecureRandom();
}
public boolean has(final String token) {
clear();
Token tokenStub = new Token(token);
return this.tokens.contains(tokenStub);
}
public boolean remove(final String token) {
Token tokenStub = new Token(token);
return this.tokens.remove(tokenStub);
}
public Token retrieve(final TokenDetails tokenDetails) {
clear();
Token token = this.get(tokenDetails);
if (token == null) {
return gen(tokenDetails);
}
token.setDate(System.currentTimeMillis());
token.setTokenDetails(tokenDetails);
return token;
}
... //other methods
}
我是 Spring Boot 的新手,我了解 Spring Security,但我想制作自己的安全服务。有什么方法可以使我的 @Component 类在 Spring Boot 中线程安全吗?
最佳答案
你只需要确保你的设置是线程安全的。您可以使用 ConcurrentSkipListSet而不是 HashSet 以使其线程安全。
关于java - Spring:如何使@Component线程安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449080/