spring学习笔记2--Bean的初始化(实例化)、作用域
来源:互联网 发布:ubuntu开机系统还原 编辑:程序博客网 时间:2024/05/16 09:31
前言:自己在复习spring相关知识,特此记录,欢迎大家交流指正-----QQ:767872620
<!-- id是不能为特殊字符的,name可以有特殊字符,没有特殊字符是最好用id ,id默认首字母小写-->
一、三种实例化bean方式
<!--1.使用类构造器实现 --> <bean id="personService" class="cn.itcast.service.imp.PersonServiceBean" init-method="init" destroy-method="destroy"></bean>import cn.itcast.service.PersonService;
/** * 抽取接口实现的 * 右击-》Refactor-》Extract interface * @author Mars * */public class PersonServiceBean implements PersonService { /** * bean中的init-method属性指定在实例初始化后执行的初始化方法。 * 一般用于数据库连接的打开等 */ public void init(){ System.out.println("执行了初始化方法"); } /** * bean中的destory属性指定的在关闭容器前执行的销毁方法。 * 一般用于销毁资源:关闭数据库连接等 */ public void destroy(){ System.out.println("执行了销毁方法"); } public PersonServiceBean(){ System.out.println("我被实例化了"); } public void save(){ System.out.println("我是save方法"); }}
<!--2.使用静态工厂类实现 --> <bean id="personService2" class="cn.itcast.service.imp.PersonServiceBeanFactory" factory-method="createPersonServiceBean"></bean>
/** * 静态工厂类实现 * @author Mars * */public class PersonServiceBeanFactory { public static PersonServiceBean createPersonServiceBean(){ return new PersonServiceBean(); } }
<!--3.使用实例工厂类实现 --> <bean id="PersonServiceBeanFactory2" class="cn.itcast.service.imp.PersonServiceBeanFactory2"></bean> <bean id="personService3" factory-bean="PersonServiceBeanFactory2" factory-method="createPersonServiceBean"></bean>
/** * 实例工厂类实现 * @author Mars * */public class PersonServiceBeanFactory2 {public PersonServiceBean createPersonServiceBean(){return new PersonServiceBean();}}
二、Bean的作用域
1.singleton(默认)单例在每个spring的IOC容器中一个bean定义只有只有一个对象实例。lazy-init延迟初始化:默认情况下会在容器启动时初始化Bean,但是我们可以指定bean节点中的的lazy-init=“true”来延迟初始化。这时候只有第一次获取bean时才会被初始化bean。
如:<bean id="personService" class="cn.itcast.service.imp.PersonServiceBean" lazy-init ="true" ></bean>
default-lazy-init延迟初始化:如果想对所有的bean都应用延迟初始化,可以在根节点beans设置default-lazy-init="true"
如:<beans default-lazy-init="true" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"></beans>
2.bean节点的scope属性指定bean的作用域(1)prototype(破除单例魔咒)每次从容器获取bean都是新的对象
(2)request
(3)session
(4)global session
小结:
1.默认为初始化为单例模式:在只有id,class时,在IOC容器中初始化为单例模式
2.多例:在配置文件添加scpoe=“prototype”时,在调用getBean("BeanName")时初始化
3.当单例模式下,在bean的节点添加lazy-init=“true”则在初始化IOC容器时不进行初始化(实例化),只有对第一个bean有效时初始化,在beans节点有添加default-lazy-init=“true”时可以对所有的bean节点有效。延迟加载bean在调用(运行期)进行初始化。
4.init-method:bean节点中的init-method属性是指定“初始化方法”(方法名),在实例化后(调用构造方法后)执行的指定的“初始化方法”。一般用于数据连接的初始化
5.destroy-method:bean节点中的idestroy-method属性是指定“销毁方法”(方法名),在关闭容器之前执行此“销毁方法”。
6.如果没有人为关闭容器,bean一直存在于容器中,可以通过AbstractApplicationContext中的close()手动关闭容器,“销毁方法”在关闭容器前执行。 /*通过AbstractApplicationContext抽象类实现,验证销毁方法*/
AbstractApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml");
cxt.close();
快捷键:抽取接口:右击->Refactor->Extract Interface
- spring学习笔记2--Bean的初始化(实例化)、作用域
- Spring 学习笔记 Bean的作用域
- 学习笔记:Spring Bean的作用域
- 2--spring bean 的作用域scope 设置;bean的初始化和销毁方法,profile配置不同环境实例化不同的bean,自定义事件,自定义监听器
- Spring学习笔记-IOC高级特性1-Bean的创建、作用域、初始化和析构
- Spring Bean的实例化(学习笔记)
- 传智播客spring学习,实例化bean的方式及Bean的作用域
- Spring Bean的作用域 实例
- Spring学习笔记(二)Bean的作用域
- JavaWeb学习笔记之Spring中bean的作用域
- 【Spring学习笔记五】-Bean的作用域
- SpringInAction学习笔记:Spring bean的作用域
- Spring学习笔记之Bean的作用域
- Spring学习笔记之Bean的作用域
- spring学习笔记五 bean的作用域
- Spring实战学习笔记——bean的作用域
- Spring Bean作用域及其实例化
- Spring学习笔记(5.Spring Bean装配之Bean的配置项及作用域)
- Java程序优化的一些最佳实践
- 异常学习
- linux下解压命令大全
- 黑马程序员_面向对象(概述、封装)
- Visual C++中DDB与DIB位图编程全攻略
- spring学习笔记2--Bean的初始化(实例化)、作用域
- android 获取 控件在布局中的位置
- 详解STL中map的用法
- 查看端口占用
- VC++消息钩子编程
- 使用 PIVOT 和 UNPIVOT 行转列
- android 自定义TextView
- iOS ASMediaFocusManager 缩略图预览
- TQ2440 u-boot-2012.04.01移植二支持NAND启动