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

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

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

00-1010这是我们经常用来实现Spring的Bean工厂,编写一个工具类并打开一个静态方法:get实体类。

public class bean helperimplements bean factoryaware {

privatestaticBeanFactoryfactory

/**

*获取实体类。

*

*@paramid

* @返回

*/

publicatstatitgetbean(Stringid){ 0

return(T)factory . getbean(id);

}

/**

*成立豆厂。

*

*@parambeanFactory

*/

@覆盖

public voitSetBeanFactory(BeanFactoryBeanFactory){ 0

bean helper . factory=bean factory;

}

}声纳扫描报告:

实例方法不应写入“静态”字段正确地从非静态方法更新静态字段是一件棘手的事情,如果有多个类实例和/或多个线程在运行,很容易导致错误。理想情况下,静态字段只能从同步的静态方法中更新。每当从非静态方法更新静态字段时,此规则都会引发问题。

翻译:

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

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

public classbeahnhelperimplements beanforceyaware {

privatestaticBeanFactoryfactory

/**

*获取实体类。

*

*@paramid

* @返回

*/

publicatstatitgetbean(Stringid){ 0

return(T)factory . getbean(id);

}

privatedstativationsetfactory(BeanFactoryFactory){ 0

BeanHelper.factory=factory

}

/**

*成立豆厂。

*

*@parambeanFactory

*/

@覆盖

public voitSetBeanFactory(BeanFactoryBeanFactory){ 0

setFactory(BeanFactory);

}

}

打包一个静态setFactory方法,声纳扫描不会造成问题。因为它是一个静态方法,所以将首先初始化它。此外,在setFactory方法中,可以判断BeanHelper.factory是否为空,如果不为空,则不会进行赋值,从而确保它不会被多个实例或多线程覆盖,因此这里不再详细描述。

阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/38060.html

(0)

相关推荐

  • spark缓存教程(spark缓存更新)

    技术Spark缓存的使用示例分析本篇内容介绍了“Spark缓存的使用示例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成

    攻略 2021年12月14日
  • mysql数据库常用命令的含义(mysql列出所有数据库的命令是什么)

    技术MySQL数据库的基本命令有哪些小编给大家分享一下MySQL数据库的基本命令有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、概述数

    攻略 2021年12月21日
  • 我为妈妈做件事作文,帮妈妈擦地作文50个字

    技术我为妈妈做件事作文,帮妈妈擦地作文50个字范文我为妈妈做件事作文:5月9日是母亲节,老师布置了“帮妈妈做一件事”的作业。我不知道该帮妈妈做什么事,就去问爸爸,爸爸说:“可以帮妈妈洗洗碗,或者帮妈妈捶捶背。”我又去问妈

    生活 2021年10月23日
  • 怎么使用span解决数组退化和越界访问

    技术怎么使用span解决数组退化和越界访问本篇文章给大家分享的是有关怎么使用span解决数组退化和越界访问,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。数组

    攻略 2021年11月10日
  • C++怎么定义析构函数

    技术C++怎么定义析构函数这篇文章主要讲解了“C++怎么定义析构函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么定义析构函数”吧!如果一个类需要明确的销毁动作

    攻略 2021年11月29日
  • 如何远程连接MYSQL

    技术如何远程连接MYSQL这篇文章将为大家详细讲解有关如何远程连接MYSQL,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。启动MYSQL[root@zhangruiu1 ~]# mys

    攻略 2021年11月1日