如何解决普通方法调用静态属性的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)

相关推荐

  • Elasticsearch-1

    技术Elasticsearch-1 Elasticsearch-11-今日内容初识 ElasticSearch安装 ElasticSearchElasticSearch 核心概念操作 ElasticSe

    礼包 2021年11月24日
  • 树莓派如何安装Samba实现和Windows共享

    技术树莓派如何安装Samba实现和Windows共享这篇文章将为大家详细讲解有关树莓派如何安装Samba实现和Windows共享,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。创建Sam

    攻略 2021年11月20日
  • 什么叫奇函数,什么是奇函数什么是偶函数

    技术什么叫奇函数,什么是奇函数什么是偶函数【一】 定义什么叫奇函数:若函数f(x)的定义域D关于原点对称,且对定义域内的每一个x,都有f(-x)=-f(x)成立,则称函数f(x)是在区间D上的奇函数;若对定义域内的每一个

    生活 2021年10月22日
  • Spring框架访问数据库的两种方式的小案例

    技术Spring框架访问数据库的两种方式的小案例 Spring框架访问数据库的两种方式的小案例1.1 以Xml的方式访问数据库的案例
    要以xml的方式访问数据库需要用到JdbcTemplate ,因为

    礼包 2021年10月19日
  • Go语言基本数据类型有哪些

    技术Go语言基本数据类型有哪些这篇文章主要介绍“Go语言基本数据类型有哪些”,在日常操作中,相信很多人在Go语言基本数据类型有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言基本

    攻略 2021年11月4日
  • apacheflink多个漏洞分析(apacheflink目录遍历漏洞修复)

    技术Apache Flink 目录遍历漏洞是怎样的本篇文章给大家分享的是有关Apache Flink 目录遍历漏洞是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一

    攻略 2021年12月21日