千家信息网

如何解决普通方法调用静态属性的Sonar问题

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,如何解决普通方法调用静态属性Sonar问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。问题:普通方法调用静态属性时,S
千家信息网最后更新 2026年11月02日如何解决普通方法调用静态属性的Sonar问题

如何解决普通方法调用静态属性Sonar问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

问题:普通方法调用静态属性时,Sonar会认为有问题

这是我们经常用的,实现Spring的Bean工厂,写一个工具类, 开放一个静态方法:获取实体类

public class BeanHelper implements BeanFactoryAware {        private static BeanFactory factory;    /**     * 获取实体类     *      * @param id     * @return     */    public static  T getBean(String id) {        return (T) factory.getBean(id);    }    /**     * 设置bean工厂     *      * @param beanFactory     */    @Override    public void setBeanFactory(BeanFactory beanFactory) {        BeanHelper.factory = beanFactory;    }}

Sonar扫描会报:

Instance methods should not write to "static" fields Correctly updating a static field from a non-static method is tricky to get right and could easily lead to bugs if there are multiple class instances and/or multiple threads in play. Ideally, static fields are only updated from synchronized static methods. This rule raises an issue each time a static field is updated from a non-static method.

翻译:

正确地从非静态方法更新静态字段是很棘手的, 如果在运行中有多个类实例和 / 或多个线程, 则可以很容易地导致 bug。理想情况下, 静态字段只从同步静态方法更新。 每次从非静态方法更新静态字段时, 此规则将引发一个问题。

解决办法:对静态属性包装一个静态方法

public class BeanHelper implements BeanFactoryAware {    private static BeanFactory factory;    /**     * 获取实体类     *      * @param id     * @return     */    public static  T getBean(String id) {        return (T) factory.getBean(id);    }    private static void setFactory(BeanFactory factory) {        BeanHelper.factory = factory;    }    /**     * 设置bean工厂     *      * @param beanFactory     */    @Override    public void setBeanFactory(BeanFactory beanFactory) {        setFactory(beanFactory);    }}


包装一个静态 setFactory 方法,Sonar扫描就不会产生问题,由于是静态方法,会被最先初始化,更近一步,可以在 setFactory 方法中,判断 BeanHelper.factory 是否为 null,不为 null 则不赋值,保证不会被多实例或多线程覆盖,此处就不详细写出了。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

静态 方法 问题 属性 字段 实体 工厂 更新 普通 多个 实例 线程 包装 帮助 棘手 清楚 内容 办法 对此 工具 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技学校 金融科技创新监管互联网金融 致骋互联网科技 苏州互联网科技贷款公司 奇士达互联网科技 深圳天众互联网科技公司 富国互联网科技创新基金 南山科技园互联网公司有哪些 知域互联网科技有限公司大骗子 杭州壁岐互联网科技有限公司 华夏恒生互联网科技013171 洛阳共同富裕互联网科技有限公司 雨阳互联网卡科技有限公司 领航科技大厦互联网公司 图游互联网科技 广西科技产业互联网是什么 互联网公司属于科技吗 求路客互联网科技电话 广东猫王互联网科技有限公司电话 株洲百竞科技的互联网营销顾问 中智农互联网科技 美国互联网科技 智网互联网科技 上海亿帐通互联网科技 海南科技产业互联网平台 开一家科技互联网公司需要多少钱 东莞新华互联网科技学校 城市宝互联网科技有限公司 有人说阿里系是互联网科技企业 互联网科技博主张洲
0