快捷搜索: 王者荣耀 脱发

springboot 敏感词判定注解

场景:用户评论的时候 会让他输入文字 这个时候 就要敏感词判定一下

效果展示:

swagger展示

实现原理

hutool工具包实现

cn.hutool.dfa Class SensitiveUtil cn.hutool.dfa.SensitiveUtil
init public static void init(<> sensitiveWords) 初始化敏感词树 Parameters: sensitiveWords - 敏感词列表 containsSensitive public static boolean containsSensitive( obj) 是否包含敏感词 Parameters: obj - bean,会被转为JSON字符串 Returns: 是否包含

会用到以上俩个方法

jar包导入:

要最新的自己去找就可以了

<!--hutool工具类 --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.6</version> </dependency> <!--参数校验 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.1.Final</version> </dependency> <dependency> <groupId>org.glassfish</groupId> <artifactId>jakarta.el</artifactId> <version>3.0.3</version> </dependency>

上代码

第一步:初始化敏感词

可以以读取文件的形式

/**
 * @Description 敏感词初始化加载
 * @Author 小乌龟
 * @Date 2022/5/21 14:20
 */
@Configuration
@Slf4j
public class SensitiveWordConfig implements InitializingBean {
    @Autowired
    private WebAppDataProperties webAppDataProperties;

    @Override
    public void afterPropertiesSet(){
    //自己对应的文件路径 存放地址
        File file = FileUtil.file(webAppDataProperties.getMappingLocation()+"sensitiveWord.txt");
        FileReader reader = new FileReader(file);
        SensitiveUtil.init(reader.readLines());
        log.info("initialize bean:{}", SensitiveWordConfig.class.getName());
    }
}

温馨提示:

第二步:

注解:

IsSensitiveWord

/**
 * @author 小乌龟 敏感词判定 string
 */
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@NotBlank(message = "内容不可为空")
@Constraint(validatedBy = {IsSensitiveWordValidation.class})
public @interface IsSensitiveWord {
    String message() default "含有敏感词不可提交";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

IsSensitiveWordValidation

/**
 * @Description 敏感词验证
 * @Author 小乌龟
 * @Date 2022/5/22 14:02
 */
public class IsSensitiveWordValidation implements ConstraintValidator<IsSensitiveWord, String> {
    @Override
    public void initialize(IsSensitiveWord constraintAnnotation) {
        ConstraintValidator.super.initialize(constraintAnnotation);
    }


    @Override
    public boolean isValid(String content, ConstraintValidatorContext constraintValidatorContext) {
        //hutool 敏感词查询 是否包含敏感词
        return !SensitiveUtil.containsSensitive(content);
    }
}
经验分享 程序员 微信小程序 职场和发展