Spring它不支持依赖注入static静态变量

Spring它不支持依赖注入static静态变量

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

在springframework在,我们不能@Autowired静态变量,制作spring bean,例如,没有那么:

@Autowired
private static YourClass yourClass;

可以试一下,yourClass在这样的状态下不可以被依赖注入,会抛出执行时异常java.lang.NullPointerException,为什么呢?静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入.

而使用静态变量/类变量扩大了静态方法的使用范围.静态方法在spring是不推荐使用的.依赖注入的主要目的,是让容器去产生一个对象的实例,然后在整个生命周期中使用他们,同一时候也让testing工作更加easy.

一旦你使用静态方法,就不再须要去产生这个类的实例,这会让testing变得更加困难,同一时候你也不能为一个给定的类,依靠注入方式去产生多个具有不同的依赖环境的实例.这样的static field它是隐含共享,它是一个global全局状态,spring同样是不建议这样做.

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117717.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • next()和nextLine()的区别详解

    next()和nextLine()的区别详解//next()和nextLine()的区别详解/*next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其过滤掉;只有在读取到有效字符之后,next()方法才将其后的空格键、Tab键或Enter键等视为结束符;所以next()方法不能得到带空格的字符串。 *//*nextLine()方法字

    2022年5月29日
    34
  • Redis集群搭建

    Redis集群搭建

    2021年6月15日
    112
  • 基于gitlab的CICD流程规范

    基于gitlab的CICD流程规范前言:这篇文章主要讲一讲基于gitlab的CICD流程规范基于gitlab的CICD流程规范一、简介二、CICD流程图三、CICD说明四、结合CICD流程拓展1、业务代码-数据库基于flyway实现版本控制2、数据库版本控制3、二进制或内置五、代码质量检查及自动化测试(未来)六、疑问解答与加群交流学习一、简介为了提升线下测试效率,缩短测试时间,提升提测代码质量,规范流程,缩短测试准备和执行时间,缩短问题定位时间,提供预测性指标,规范CICD流程,以提升整体团队效率。二、CICD流程图三、CICD

    2022年6月14日
    110
  • python中用turtle画一个圆形(pythonturtle教程)

    最近发现一个很有意思的画图的python库,叫做turtle,这里先说下用turtle这个库来实现用正方形画圆的思路。每次都用乌龟(turtle)来画出一个正方形,然后通过旋转3°后,继续画一样的正方形,在通过120次循环后就实现了完整的圆,这里当然也可以用其他的角度和次数,只要能完成360度就可以了。先看完成的图形和代码。代码如下:importturtlewindow=turtle.Scr…

    2022年4月14日
    349
  • 大数据开发步骤和流程「建议收藏」

    大数据项目开发步骤:第一步:需求:数据的输入和数据的产出;第二步:数据量、处理效率、可靠性、可维护性、简洁性;第三步:数据建模;第四步:架构设计:数据怎么进来,输出怎么展示,最最重要的是处理流出数据的架构;第五步:再次思考大数据系统和企业IT系统的交互;第六步:最终确定选择、规范等;第七步:基于数据建模写基础服务代码;第八步:正式编写第一个模块;第九步:实现其它…

    2022年4月8日
    78
  • java getclassloader_java-关于getClass().getClassLoader()

    java getclassloader_java-关于getClass().getClassLoader()InputStreamis=getClass().getClassLoader().getResourceAsStream(“helloworld.properties”);中getClass()和getClassLoader()都是什么意思呀.getClass():取得当前对象所属的Class对象getClassLoader():取得该Class对象的类装载器类装载器负责从Java字符文件…

    2022年5月2日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号