Spring它不支持依赖注入static静态变量
2015-06-30 08:04
549 查看
在springframework在,我们不能@Autowired静态变量,制作spring bean,例如,没有那么:
可以试一下,yourClass在这样的状态下不可以被依赖注入,会抛出执行时异常java.lang.NullPointerException,为什么呢?静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入.
而使用静态变量/类变量扩大了静态方法的使用范围.静态方法在spring是不推荐使用的.依赖注入的主要目的,是让容器去产生一个对象的实例,然后在整个生命周期中使用他们,同一时候也让testing工作更加easy.
一旦你使用静态方法,就不再须要去产生这个类的实例,这会让testing变得更加困难,同一时候你也不能为一个给定的类,依靠注入方式去产生多个具有不同的依赖环境的实例.这样的static field它是隐含共享,它是一个global全局状态,spring同样是不建议这样做.
@Autowired private static YourClass yourClass;
可以试一下,yourClass在这样的状态下不可以被依赖注入,会抛出执行时异常java.lang.NullPointerException,为什么呢?静态变量/类变量不是对象的属性,而是一个类的属性,spring则是基于对象层面上的依赖注入.
而使用静态变量/类变量扩大了静态方法的使用范围.静态方法在spring是不推荐使用的.依赖注入的主要目的,是让容器去产生一个对象的实例,然后在整个生命周期中使用他们,同一时候也让testing工作更加easy.
一旦你使用静态方法,就不再须要去产生这个类的实例,这会让testing变得更加困难,同一时候你也不能为一个给定的类,依靠注入方式去产生多个具有不同的依赖环境的实例.这样的static field它是隐含共享,它是一个global全局状态,spring同样是不建议这样做.
相关文章推荐
- 使用Gradle构建Java项目
- maven构建java web项目(eclipse原理同)
- 深入 Java 调试体系,第 2 部分: JVMTI 和 Agent 实现
- 基于 JVMTI 实现 Java 线程的监控
- Java RMI之HelloWorld篇
- Java 理论与实践: 用 JMX 检测应用程序
- IBM 的 Java 诊断,第 3 部分: 使用面向 Java 的 Lock Analyzer 诊断同步和锁问题
- Java SE 6 新特性: 编译器 API
- Java SE 6 新特性: JMX 与系统管理
- 扩展 Spring 的 JMX 支持
- JAVA工具简绍路径
- 关于 Java 性能监控您不知道的 5 件事,第 2 部分
- 关于 Java 常用工具您不知道的 5 件事
- Java 运行时监控,第 3 部分: 监控应用程序生态系统的性能与可用性
- Java 运行时监控,第 2 部分: 编译后插装和性能监控
- Java 运行时监控,第 1 部分: Java 系统运行时性能和可用性监控
- java集群优化——初探多线程
- java初学1
- java 面向对象的开始
- javaSE中的输入输出流---一个读取流,对应多个输出流。而且生成的碎片文件都有有序的编号