Spring学习笔记03--bean的作用域(scope属性)
2016-10-20 12:00
435 查看
1。 spring容器在创建Java Bean的时候,默认是在容器初始化的时候创建,并且创建的Bean都是单例的。
如果想指定这个bean不是单例,则可以指定scope=”prototype” 或者 singleton = “false” 。
关于scope属性,可以参照这篇文章
2。指定单例模式的同时,如果希望这个Bean在容器初始化的时候,不被创建,而是调用ctx.getBean()方法的时候才被创建,则可以在该bean标签指定 lazy-init=“true”,这时候,这个bean会在第一次获取的时候给创建。 如果要指定所有的Bean都不在容器初始化就创建,则可以在beans标签指定属性 default-lazy-init= “true”。
3。有时候我们希望Bean在被初始化的时候调用一个初始化方法,做一些初始化的操作,那么可以定义这个方法,并在bean标签里面指定 init-method = “xxx”,这里的xxx是这个初始化方法的方法名。并且这个方法即使被指定为private也没有影响(说明spring内部是通过反射实现的)。
4。同样的,如果需要在Bean被销毁的时候,执行一个销毁的方法,则可以指定属性 destroy-method=”xxx” 。
那么,这个bean是什么时候被销毁的呢?如果没有手动的销毁这个bean,则这个bean会一直存在于spring容器中,知道spring容器被关闭时,这个bean才会被销毁。我们可以调用spring容器的close方法正常关闭spring容器。
需要注意的是,这个close()方法,ApplicationContext类没有,所以需要将引用类型改为ClassPathXmlApplicationContext类型:
运行结果:
需要注意的是,要想容器关闭时,bean的destroy()方法被调用,这个bean必须是单例的。
如果想指定这个bean不是单例,则可以指定scope=”prototype” 或者 singleton = “false” 。
关于scope属性,可以参照这篇文章
2。指定单例模式的同时,如果希望这个Bean在容器初始化的时候,不被创建,而是调用ctx.getBean()方法的时候才被创建,则可以在该bean标签指定 lazy-init=“true”,这时候,这个bean会在第一次获取的时候给创建。 如果要指定所有的Bean都不在容器初始化就创建,则可以在beans标签指定属性 default-lazy-init= “true”。
3。有时候我们希望Bean在被初始化的时候调用一个初始化方法,做一些初始化的操作,那么可以定义这个方法,并在bean标签里面指定 init-method = “xxx”,这里的xxx是这个初始化方法的方法名。并且这个方法即使被指定为private也没有影响(说明spring内部是通过反射实现的)。
4。同样的,如果需要在Bean被销毁的时候,执行一个销毁的方法,则可以指定属性 destroy-method=”xxx” 。
那么,这个bean是什么时候被销毁的呢?如果没有手动的销毁这个bean,则这个bean会一直存在于spring容器中,知道spring容器被关闭时,这个bean才会被销毁。我们可以调用spring容器的close方法正常关闭spring容器。
需要注意的是,这个close()方法,ApplicationContext类没有,所以需要将引用类型改为ClassPathXmlApplicationContext类型:
@Test public void instanceSpring(){ //初始化Spring容器 AbstractXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml"); IPersonService personService = (IPersonService) ctx.getBean("personService"); personService.save(); ctx.close(); }
运行结果:
需要注意的是,要想容器关闭时,bean的destroy()方法被调用,这个bean必须是单例的。
相关文章推荐
- bean元素scope属性配置Bean的作用域
- 一个区分Bean的作用域的例子,即的scope属性
- 一个区分Bean的作用域的例子,即的scope属性
- 一个区分Bean的作用域的例子,即的scope属性
- spring配置文件中bean中scope属性prototype和singleton
- spring中bean属性scope介绍
- Spring中Bean的作用域(Scope)
- 装配Bean基于XML (Bean种类、作用域、生命周期、属性依赖注入)
- spring之bean的作用域scope的值的详解
- Spring中bean作用域属性scope
- 容器对象spring(4)_ bean属性 scope:作用域和lazy-init
- Spring的bean标签的scope和parent属性
- bean的scope属性
- bean的scope属性
- spring中bean属性scope介绍
- Spring bean的作用域(scope)
- spring中bean属性scope介绍
- Spring Scope属性作用域详解
- jsp:bean标签中scope属性的四种属性值理解
- Spring中bean的作用范围:Scope属性的值