1、文件所在位置:
2、需要Guava依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.0</version>
</dependency>
3、启动时就读取放入缓存的代码:
@Service
@AllArgsConstructor
@Slf4j
public class SensitiveCheckService {
private static final Cache<String, String> SENSITIVE_WORDS_CACHE = CacheBuilder.newBuilder()
// 设置缓存容量数
.maximumSize(1)
.build();
static {
try {
ClassLoader classLoader = DemoApplication.class.getClassLoader();
Enumeration<URL> resources = classLoader.getResources("static/sensitive/敏感词库.txt");
List<String> allSensitiveList = new ArrayList<>();
while (resources.hasMoreElements()) {
URL resource = resources.nextElement();
BufferedReader reader = new BufferedReader(new InputStreamReader(resource.openStream(), "utf-8"));
String line;
while ((line = reader.readLine()) != null) {
// 一行行读取
allSensitiveList.add(line);
}
SENSITIVE_WORDS_CACHE.put(RedisKeyConstant.ALL_SENSITIVE_WORDS, JSON.toJSONString(allSensitiveList));
}
} catch (Exception e) {
log.error("加载敏感词失败", e);
}
}
public List<String> getSensitiveWordsCache() {
return JSON.parseArray(SENSITIVE_WORDS_CACHE.getIfPresent(RedisKeyConstant.ALL_SENSITIVE_WORDS), String.class);
}
}
Guava的缓存类似于redis。比起Redis,Guava的缓存优势在于更轻更快,而Redis的优势在于支持分布式