我们都知道springIOC容器中保存注入的对象,那么这些对象的生命周期是怎么样的呢?
这就涉及到@Scope注解,它指定了对象的作用域
常见作用域有以下几种:
prototype 多实例,获取对象时才创建对象(每次获取Bean时都会产生一个新的实例)
singleton 单实例,容器启动时创建对象(全局有且只有一个实例,注解默认)
---------下面了解一下-------------
request 主要针对web应用,每次请求都创建一个实例
session 同一个session使用同一个实例
使用方式如下:
@Scope("prototype")@Beanpublic Person person(){return new Person("zc2","27");}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
由上面我们可知:singleton 单实例是在容器启动时创建对象的,那么如果我们想让它在获取对象的时候才创建实例呢?这里就需要用到懒加载,我们可以通过@Lazy来指定单实例在获取时才去创建实例。如下
@Lazy@Beanpublic Person person(){return new Person("zc2","18");}