Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以在spring服务层中使用静态变量吗?_Java_Spring_Static - Fatal编程技术网

Java 我可以在spring服务层中使用静态变量吗?

Java 我可以在spring服务层中使用静态变量吗?,java,spring,static,Java,Spring,Static,我想从服务层在整个应用程序中使用静态计数器 可以在spring的服务层中使用静态计数器?默认情况下,Springbean是单例的。因此,您不必将字段设置为静态以确保只有一个实例(当然,您可以这样做:Java代码就是Java代码) 不过,重要的是,多线程可以访问您的计数器。因此,您必须确保所有这些访问都是线程安全的。最简单的方法可能是使用AtomicInteger或AtomicLong来实现计数器。默认情况下,Springbean是单例的。因此,您不必将字段设置为静态以确保只有一个实例(当然,您可

我想从服务层在整个应用程序中使用静态计数器


可以在spring的服务层中使用静态计数器?

默认情况下,Springbean是单例的。因此,您不必将字段设置为静态以确保只有一个实例(当然,您可以这样做:Java代码就是Java代码)


不过,重要的是,多线程可以访问您的计数器。因此,您必须确保所有这些访问都是线程安全的。最简单的方法可能是使用AtomicInteger或AtomicLong来实现计数器。

默认情况下,Springbean是单例的。因此,您不必将字段设置为静态以确保只有一个实例(当然,您可以这样做:Java代码就是Java代码)


不过,重要的是,多线程可以访问您的计数器。因此,您必须确保所有这些访问都是线程安全的。最简单的方法可能是使用AtomicInteger或AtomicLong实现计数器。

同意非静态AtomicInteger或AtomicLong适用于这种情况。关于“不必使字段保持静态以确保只有一个实例”的注释:使用实例变量,如果使用基于子类的代理(CGLIB),实际上可以为单例bean创建两个实例。对于一个简单的计数器,这不应该是一个问题。对于在单例构造函数中创建的昂贵资源,这可能是一个考虑因素。同意在这种情况下,非静态AtomicInteger或AtomicLong是合适的。关于“不必使字段保持静态以确保只有一个实例”的注释:使用实例变量,如果使用基于子类的代理(CGLIB),实际上可以为单例bean创建两个实例。对于一个简单的计数器,这不应该是一个问题。对于在单例构造函数中创建的昂贵资源,这可能是一个考虑因素。