静态方法以及静态变量:
都是在类加载的时候就已经分配了内存空间。
使用场景:
如果一个方法不需要操作任何实例成员变量就可以实现某种功能,就可以将这种方法声明成类方法。
实例变量以及静态变量:
实例变量:
实例变量是每次运行都需要使用不同的值去运行,不断的变化,而且绝对不可以与其他实例共享,否则会导致程序紊乱。
静态变量:
静态变量是一些固定的值,可以被改变,却被所有该程序的所有实例共享
必要性:
从程序阅读的角度来讲,表明了这个值被多次使用,而且改变也是实例之间运行期间可以进行通信的一种方式
优点:
静态变量声明之后可以被多处使用,一个值被多次使用,我们没有必要在使用到的类里面都一一声明一次,我们只需要声明一次,然后被多次调用,从而减少内存的开支提升程序的效率,因为是程序共享的一个变量,如果被多个地方调用的这个值都需要改变,我们只需要改一个地方就可以,没有必要每个使用到的地方都去修改,从而节省了程序研发的成本。
spring mvc中有配置机制:
一般配置文件里面的值都是加载到静态变量里面的。
为什么配置文件里面的值要加载到静态变量中呢?
因为它们原本就是需要可以被动态修改,而且在多处使用又不要多次实例化从而多次分配内存空间,这些变量有些在个别类中,有些在公共配置类中。
为什么要将有些配置加载到个别类,而有些需要加载到公共类?
加载到个别类中的那些,有可能是这个类的实例需要相互操作,而其他类永远都不需要使用到这个变量,如果整个程序很大,配置项非常多,如果都放到公共类,对于程序 阅读就相对来说比较困难了,虽然说这样设计对于内存空间没有任何提升。
加载到公共类中,是因为这些变量需要被多个类使用,方便统一修改与程序阅读,也节省了内存空间。
配置文件的好处:
配置文件里面的值被加载,我们可以改变配置文件的值,让配置项重新加载到项目中而不需要重启程序,让程序修改对于用户来说是无感知的。
动态该配置的方式有两种,
第一种:是通过set方式,通过调用某个接口,把参数传给接口动态的修改让用户无感知。
第二种:利用spring里面配置加载的原理,重新加载配置文件里面的值
(建议使用第二种,改变配置,以免忘记需要修改配置文件导致第二次启动程序那个配置值还是原来的值)