敏感词汇工具类sensitive word 动态配置敏感词

1.引入jar包

        <dependency>
            <groupId>com.github.houbb</groupId>
            <artifactId>sensitive-word</artifactId>
            <version>0.18.0</version>
        </dependency>

2. 创建配置文件

SpringSensitiveWordConfig 文件

@Configuration
public class SpringSensitiveWordConfig {
    @Autowired
    private MyDdWordAllow myDdWordAllow;

    @Autowired
    private MyDdWordDeny myDdWordDeny;

    /**
     * 初始化引导类
     * @return 初始化引导类
     * @since 1.0.0
     */
    @Bean
    public SensitiveWordBs sensitiveWordBs() {
        SensitiveWordBs sensitiveWordBs = SensitiveWordBs.newInstance()
                .wordAllow(WordAllows.chains(WordAllows.defaults(), myDdWordAllow))
                .wordDeny(WordDenys.chains(WordDenys.defaults(),myDdWordDeny))
                // 各种其他配置
                .init();

        return sensitiveWordBs;
    }

}

MyDdWordAllow 白名单文件

@Component
public class MyDdWordAllow implements IWordAllow {

    @Override
    public List<String> allow() {
        // 数据库查询
        return Arrays.asList("白名单字符串");
    }

}

MyDdWordDeny 敏感词名单文件

@Component
public class MyDdWordDeny implements IWordDeny {

    private static RedisService redisService;

    @Autowired
    public void setRedisService(RedisService redisService) {
        MyDdWordDeny.redisService = redisService;
    }

    @Override
    public List<String> deny() {
        System.out.println(">>>>>>>>>>MyDdWordDeny 初始化成功");
        List<String >list= redisService.getCacheObject("MyDdWordDeny");
        if(list == null){
            list = new ArrayList<>();
        }
        // 数据库返回的各种信息
        return list;
    }

}

敏感词 变化重置类 SensitiveWordService

@Component
public class SensitiveWordService {

    @Autowired
    private SensitiveWordBs sensitiveWordBs;

    /**
     * 更新词库
     *
     * 每次数据库的信息发生变化之后,首先调用更新数据库敏感词库的方法。
     * 如果需要生效,则调用这个方法。
     *
     * 说明:重新初始化不影响旧的方法使用。初始化完成后,会以新的为准。
     */
    public void refresh() {
        // 每次数据库的信息发生变化之后,首先调用更新数据库敏感词库的方法,然后调用这个方法。
        sensitiveWordBs.init();
    }

}

敏感词 表数据 进行增删改时 处罚 方法

  public void refeshSensitiveWord() {
        LambdaQueryWrapper<SysWordDeny> wrapper = Wrappers.lambdaQuery();
        wrapper.select(SysWordDeny::getKeyword).eq(SysWordDeny::getEnable,1);
        ArrayList<String> keywordList= (ArrayList<String>) listObjs(wrapper, Object::toString);
        redisService.setCacheObject("MyDdWordDeny",keywordList);
        sensitiveWordService.refresh();
    }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值