品牌型号:联想ThinkPad X1
系统:Windows10家庭版
软件版本:Spring 5.3.7
对于Java程序员来说,不可否认的是Spring框架一定是我们常用的基础框架之一,不管是去哪里面试,工作要求上来就是要求起码得会SSM框架,不管是企业项目还是我们个人练手项目,哪哪都能看到它的身影,实际在开发和学习过程中,很多人都会被一些问题困扰到。例如我常常在交流群里看到有人问Spring是不是开源框架,此外,我们在使用Spring进行依赖注入的时候,我们可不可以直接注入静态属性呢?接下来,我们就来围绕着“Spring是开源框架吗”“Spring可以注入静态属性吗”这两个问题给大家做个解答,希望帮助大家能上手Spring框架。
一、Spring是开源框架吗
直接告诉大家,Spring框架当然是一款开源的Java后端框架,大家可以放心使用。它最早是由Rod Johnson在2003年首次提出的,一开始的设计初衷是为了解决我们在企业开发时的复杂性,简化大家的开发流程。

它是开源的,允许我们去官方仓库或者开源社区获取源码去学习、研究甚至修改和二次开发,这也是Spring能快速普及和不断迭代升级的原因。

Spring框架遵循了Apache License2.0开源协议,这个协议是允许开发者自由使用、传播Spring框架,而且Spring拥有庞大的开源社区支持,全球各地的开发者都能参与到源码的优化和新功能开发中来,开源并不是意味着不稳定,反而会因为源码公开才使得问题能够被早点发现和解决。

二、Spring可以注入静态属性吗
我们很多人在项目中,经常会习惯性的给工具类、常量类中的属性定义为静态,方便后面能通过类名去调用,但实际上在Spring中用@Autowired或者@Resource等注解注入静态属性的时候,却注入失败或者属性为null的情况。

当然,这并不是意味着Spring就不支持静态属性注入,Spring只是默认不支持直接注入静态属性,但是如果我们通过一些简单的配置或者方法,还是可以实现静态属性注入的,之所以不能注入,是因为Spring IOC容器管理的是对象的实例,注入操作也是针对实例对象的非静态属性,而静态属性是属于类本身,不属于任何实例了。

那么换个思路,我们是不是可以通过非静态的setter方法注入静态属性?在setter方法上添加注入注解,方法内部来给静态属性赋值,这样我们就不需要给静态属性本身加注解了。

通过上面这个图片,我们可以看到这种思路是可行的,使用@Value注解配合静态的setter方法,这种比较适合注入配置文件中的常量。
以上就是Spring是开源框架吗,Spring可以注入静态属性吗的全部内容了。Spring是一款开源的框架,是我们Java开发生涯中逃不掉的经典框架,它可以做很多项目,不管是个人项目还是企业项目,它都易于上手帮我们简化开发流程,我们开发者可以自由使用、传播Spring框架。Spring默认是不能注入静态属性的,但是我们可以换个思路,通过非静态方法去实现静态属性注入,只需要在setter方法上添加注入注解,方法内部给静态属性赋值就可以了。