如果你有
private static MyDAO myDAO;
并在applicationContext中声明为
<bean id="myDAO" scope="singleton" class="my.MyDAO" />
当已经声明为单例时,使用static修饰符声明myDAO会有什么影响吗?
提前致谢!
答案 0 :(得分:6)
bean声明意味着Spring IoC系统将只为您的my.MyDOA
对象创建一个实例(每个webapp)。但是没有什么可以阻止其他事情(例如你的代码)创建其他实例。
如果通过Spring IoC填充myDAO
变量(使用接线文件或注释),则不需要将其声明为静态。如果包含该声明的类有多个实例,并且实例由Spring IoC创建/连接,则变量的所有副本将获得相同的值。声明static
是毫无意义和糟糕的风格。
另一方面,如果您的应用程序正在创建包含该声明的类的实例,那么它将需要采取适当的步骤来初始化它。初始化变量的方法取决于变量是否是静态的。你可能不想这样做......
答案 1 :(得分:2)
删除static
。使用spring bean时,在涉及依赖项时忘记static
。