未分類 28 3 月 2020 菜鸡提问, springboot 的 service 单例模式下,全局变量使用 static 修饰与不适用 static 修饰,在效果上有区别吗 菜鸡提问, springboot 的 service 单例模式下,全局变量使用 static 修饰与不适用 static 修饰,在效果上有区别吗 資深大佬 : EminemW 22 问题应该写的很清楚了把,我一般是用 static 修饰的,准确的做法是修饰还是不修饰呢。 大佬有話說 (12) 資深大佬 : kookio 没懂说的啥效果,static 修饰直接通过类名就能调用,类加载时就会被初始化,否则只能通过 new 的对象调用,和单例有啥关系 資深大佬 : xhinliang 看个人喜好。。。 資深大佬 : gemini767 不要乱写代码。。。。首先 static 的存放不一致,其次加载方式不一致,乱写只会给自己或者他人埋坑 資深大佬 : wysnylc 那有什么岁月静好,只不过有人在替你负重前行 主 資深大佬 : EminemW @kookio 我的意思是 比如在这个 Service 里面有一个全局变量 /常量,假设它名为 EXPIRE,这个 EXPIRE 会被 Service 里面的几个方法使用,(外部不需要调用这个 EXPIRE ),那它用不用 static 修饰都不影响使用效果吧。 主 資深大佬 : EminemW @gemini767 SpringBoot 中的 Service 默认是单例的吧,在这种情况下,如果我有个类缓存 LoadingCache,那它用 static 修饰跟不用 static 修饰的效果是一样的吧。我一般是会用 static 修饰的,只是不知道哪个更好 主 資深大佬 : EminemW @xhinliang 我一般都是加上 static 的。。 資深大佬 : cccy0 常量还是加上 static 比较好, 如果在别的类中使用这个常量, 就不用注入这个 service 了 資深大佬 : gemini767 @EminemW loadingCache 没必要是全局变量,每一个 service 的 guava 肯定有自己业务场景,没必要去做到全局使用吧,我理解的全局变量一般是配置参数,环境变量之类的,减少业务参数全局飞的现象 資深大佬 : kookio @EminemW 光讲使用效果没区别,不加 static 是属于对象,加 static 属于类,两者在内存中存放的位置不一样,一般如果只是对象自己使用就不用加了,要被外部类使用就加上,还有严格来说 Java 没有全局变量这个说法,叫成员变量和静态变量。 主 資深大佬 : EminemW @kookio 感谢,这样讲我就懂了 主 資深大佬 : EminemW @kookio 这样看来我原来大部分加 static 的变量,可以不用加了