java - Spring:如何使@Component线程安全?

标签 java multithreading spring spring-boot

我尝试为 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/

相关文章:

java - 打开一个exe窗口

Java 条件导入

java - 计算java中完成一个函数的平均时间

C# 使用线程堆安全地写入文本文件

java - 使用java api在elasticsearch中按结果获取多个字段组

java - Netty的并发编码

c++ - 在 C++ 类中创建线程

multithreading - CUDA统一内存可以被另一个CPU线程写入吗?

java - 在测试中使用 Spring @ConfigurationProperties 读取 map

java - 在java spring boot应用程序中将projectionlist转换为json格式