Spring中Bean的作用域
在Spring中定义Bean,除了可以创建Bean实例并对Bean的属性进行注入外,还可以为所定义的Bean指定一个作用域。这个作用域的取值决定了Spring创建该组件实例的策略,进而影响程序的运行效率和数据安全。在Spring2.0及之后的版本中,Bean的作用域被划分为5中。如图:
singleton是默认采用的作用域,即默认情况下Spring为每个Bean仅创建一个实例。对于不存在线程安全问题的组件,采用这种方式可以大大减少创建对象的开销,提高运行效率。
而对于存在线程安全问题的组件,则不能使用singleton模式,可以使用prototype作用域,通过scope属性设置,关键代码如下:
这样,Spring在每次获取该组件时,都会创建一个新的实例,避免因为共用同一个实例而产生线程安全问题。