3.2 scope: [skoʊp] 翻译成中文是范围的意思
(1) 测试scope属性,如果打印的ip地址相同则说明只创建了一个对象,反之则创建了俩个对象。
@Test
//测试scope属性
public void test1(){
//加载配置文件
ClassPathXmlApplicationContext app = new
ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao1 = (UserDao) app.getBean("userdao");
UserDao userDao2 = (UserDao) app.getBean("userdao");
System.out.println(userDao1);
System.out.println(userDao2);
}
(2)对象的创建时机
方法:在UserDaoImpl页面重写无参构造方法,让他在被调用时打印一句话。
public UserDaoImpl() {
System.out.println("UserDaoImpl对象创建。。。。");
}
当scope的参数是singleton时,该bean对象只在加载配置文件,创建spring容器时才创建一次。
当参数为prototype时,在getBean时创建对象,获取几次,创建几个。
request,session作用域,在创建对象的时候会把对象放到作用域中。
注:测试时需要在pom.xml中配置junit,JUnit是一个用于java语言的单元测试框架,可以简化单元测试的工作量。简单来说就是对项目最小的功能模块进行测试,在c语言中可能是一个函数,在java中可能就是一个类或一个方法了。
junit junit4.13.2 test
3.3 Bean生命周期配置
1.init-method :指定类中的初始化方法名
2.destroy-method : 指定类中的销毁方法名称
注:告诉spring容器哪个是初始化方法,哪个是销毁方法,交给spring去执行。
不写手动关闭容器时,来不及执行销毁方法,容器就自动关闭了,所以要想执行销毁方法,需要手动关闭容器。
3.4 Bean实例化的三种方法
1. 无参构造方法实例化
2. 工厂静态方法实例化
3. 工厂实例方法实例化
此前内容皆为无参构造方法实例化,工厂类方法需要创建工厂
//配置文件



