1) 对象创建:
单例/多例
scope="singleton", 默认值,即默认是单例【service/dao/工具类】
scope="prototype", 多例;【Action对象】
2) 什么时候创建?
scope="prototype" 在用到对象的时候,才创建对象。scope="singleton" 在启动(容器初始化之前), 就已经创建了bean,且整个应用只有一个。
3)是否延迟创建
lazy-init="false" 默认为false, 不延迟创建,即在启动时候就创建对象lazy-init="true" 延迟初始化, 在用到对象的时候才创建对象
(lazy-init只对单例有效)
4) 创建对象之后,初始化/销毁
init-method="init_user" 【对应对象的init_user方法,在对象创建之后执行 】destroy-method="destroy_user"
【在调用容器对象的destriy方法时候执行,(容器用实现类),scope="singleton" 时有效】
<?xml version="1.0" encoding="UTF-8"?>
<beans 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.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><bean id="userId" class="b_bean.User" scope="singleton" lazy-init="false"init-method="init_user" destroy-method="destroy_user"></bean></beans>
package b_bean;public class User {private int id;private String name;public User() {System.out.println("User对象创建....");}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void init_user(){System.out.println("init_user.....");}public void destroy_user(){System.out.println("destroy_user.....");}}
package b_bean;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class CreateBean {@Testpublic void test(){//ApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");//为了测试destroy-method,接口没有方法ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");System.out.println("ApplicationContext容器对象创建....");User user1=(User) context.getBean("userId");User user2=(User) context.getBean("userId");System.out.println(user1);System.out.println(user2);context.destroy();}
}