V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
EminemW
V2EX  ›  问与答

菜鸡提问, springboot 的 service 单例模式下,全局变量使用 static 修饰与不适用 static 修饰,在效果上有区别吗

  •  
  •   EminemW · 2020-04-02 15:27:22 +08:00 · 3176 次点击
    这是一个创建于 1731 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题应该写的很清楚了把,我一般是用 static 修饰的,准确的做法是修饰还是不修饰呢。

    12 条回复    2020-04-04 23:51:53 +08:00
    kookio
        1
    kookio  
       2020-04-02 17:43:39 +08:00
    没懂说的啥效果,static 修饰直接通过类名就能调用,类加载时就会被初始化,否则只能通过 new 的对象调用,和单例有啥关系
    xhinliang
        2
    xhinliang  
       2020-04-02 17:49:19 +08:00
    看个人喜好。。。
    gemini767
        3
    gemini767  
       2020-04-02 17:53:23 +08:00
    不要乱写代码。。。。
    首先 static 的存放不一致,其次加载方式不一致,乱写只会给自己或者他人埋坑
    wysnylc
        4
    wysnylc  
       2020-04-02 18:13:33 +08:00
    那有什么岁月静好,只不过有人在替你负重前行
    EminemW
        5
    EminemW  
    OP
       2020-04-02 18:16:28 +08:00
    @kookio 我的意思是 比如在这个 Service 里面有一个全局变量 /常量,假设它名为 EXPIRE,这个 EXPIRE 会被 Service 里面的几个方法使用,(外部不需要调用这个 EXPIRE ),那它用不用 static 修饰都不影响使用效果吧。
    EminemW
        6
    EminemW  
    OP
       2020-04-02 18:20:27 +08:00
    @gemini767 SpringBoot 中的 Service 默认是单例的吧,在这种情况下,如果我有个类缓存 LoadingCache,那它用 static 修饰跟不用 static 修饰的效果是一样的吧。我一般是会用 static 修饰的,只是不知道哪个更好
    EminemW
        7
    EminemW  
    OP
       2020-04-02 18:31:36 +08:00
    @xhinliang 我一般都是加上 static 的。。
    cccy0
        8
    cccy0  
       2020-04-02 18:53:31 +08:00
    常量还是加上 static 比较好, 如果在别的类中使用这个常量, 就不用注入这个 service 了
    gemini767
        9
    gemini767  
       2020-04-03 09:55:06 +08:00
    @EminemW loadingCache 没必要是全局变量,每一个 service 的 guava 肯定有自己业务场景,没必要去做到全局使用吧,我理解的全局变量一般是配置参数,环境变量之类的,减少业务参数全局飞的现象
    kookio
        10
    kookio  
       2020-04-04 23:08:56 +08:00 via iPhone
    @EminemW 光讲使用效果没区别,不加 static 是属于对象,加 static 属于类,两者在内存中存放的位置不一样,一般如果只是对象自己使用就不用加了,要被外部类使用就加上,还有严格来说 Java 没有全局变量这个说法,叫成员变量和静态变量。
    EminemW
        11
    EminemW  
    OP
       2020-04-04 23:49:10 +08:00 via iPhone
    @kookio 感谢,这样讲我就懂了
    EminemW
        12
    EminemW  
    OP
       2020-04-04 23:51:53 +08:00 via iPhone
    @kookio 这样看来我原来大部分加 static 的变量,可以不用加了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2835 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:15 · PVG 22:15 · LAX 06:15 · JFK 09:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.