1)如何将一个Bean组件交给Spring容器
方法:在applicationContext.xml中添加以下定义
<bean id = “标识符” class = “Bean组件类型”></bean>
2)如何获取Spring容器对象
ApplicationContext context = new ClassPathXmlApplicationContext("/applicationContext.xml");
利用context.getBean(“标识符”)方法获取容器中的Bean对象。
3)如何控制对象创建的模式
Spring中的Bean默认支持两种模式:singleton 和 prototype。
UserDAO userDAO = (UserDAO) context.getBean("UserDAOID");
UserDAO userDAO1 = (UserDAO) context.getBean("UserDAOID");
System.out.println(userDAO == userDAO1); ----------->>>> true
即:默认模式是单例模式
在Bean 里追加 scope = “prototype” 原型模式 ------>>>false
以后的话,应用在Web 程序中(前提),通过扩展,还可以使用 request、session等值,那么一个request(session)就创建一个Bean。
4) Bean对象的创建时机
Singleton模式的Bean组件是在容器实例化时创建;prototype是在调用getBean()方法时创建。
singleton模式也可以利用<bean>元素的lazy-init = “true”(延迟实例化)将对象创建工作推迟到getBean()方法。
如果想把容器当中所有的单例Bean组件都给推迟,则需要在根目录那追加属性,他里面有个default-lazy-init = “true” 。 一般还是根据默认的,在容器实例化时创建比较好。
5) 为Bean对象指定初始化和销毁方法
可以利用<bean>元素的init-method 属性,指定初始化方法;利用destroy-method 属性指定销毁方法。
指定的初始化方法是在构造方法调用后自动执行。(构造方法只要调用一次,这个方法肯定调用一次,单例模式初始化只调用一次)
指定的销毁方法是在容器close时触发,而且只适用于singleton组件。
原文地址:https://www.cnblogs.com/qzhc/p/11252861.html