spring系列(三):springioc:springbean的作用域、工厂模式、bean的生命周期、bean的懒加载

7 bean的作用域

<!--  通过bean的scope属性来指定bean对象的作用域:默认是singleton::单例::一个bean标签只创建一个对象::
	                                       此单例对象::核心配置文件已加载就创建
	             通过bean的scope属性来指定bean对象的作用域:prototype::多例::每次bean标签调用都创建一个新的对象
	                                           prototype的对象::getBean方法调用时才创建
	              通过bean的scope属性来指定bean对象的作用域:request:::针对于web项目::每个请求链对应同一个bean对象
	              通过bean的scope属性来指定bean对象的作用域:session:::针对于web项目::每个回话对应同一个bean对象
	              通过bean的scope属性来指定bean对象的作用域:global-session:::针对于web项目::整个项目对应同一个bean对象
-->
	<bean id="tea1" class="com.zhiyou100.test02.Teacher"  scope="singleton">
	    <property name="tid" value="1"/>
	    <property name="tname" value="高老师"/>
	    <property name="tsex" value=""/>
	</bean>
	<bean id="tea2" class="com.zhiyou100.test02.Teacher"  scope="prototype">
	    <property name="tid" value="2"/>
	    <property name="tname" value="高老师"/>
	    <property name="tsex" value=""/>
	</bean>

8 bean的懒加载

<!-- 懒加载:针对于单例模式::单例模式默认情况下是 核心配置文件一创建 此对象就创建
                          可以通过 lazy-init="true" 来指定第一次调用getbean方法时 才创建此对象        
    -->
<bean id="tea1" class="com.zhiyou100.test02.Teacher"  scope="singleton">
    <property name="tid" value="1"/>
    <property name="tname" value="高老师"/>
    <property name="tsex" value=""/>
</bean>
<bean id="tea2" class="com.zhiyou100.test02.Teacher"  scope="singleton" lazy-init="true">
    <property name="tid" value="2"/>
    <property name="tname" value="高老师"/>
    <property name="tsex" value=""/>
</bean>

9 工厂模式

工厂模式:a对象的创建 交给b工厂对象的方法来实现

9.1 静态工厂模式::工厂对象的方法是静态方法

  • 创建静态工厂类
public class TeacherFactoryStatic {
	public static Teacher getInstance(){
		return new Teacher(1001, "韩雪", "女");
	}
}
  • 配置文件中通过静态工厂类的军团方法创建bean
<!-- 静态工厂模式:对象的创建由工厂对象的静态方法来实现     -->
<bean id="tea1" class="com.zhiyou100.test02.TeacherFactoryStatic"   factory-method="getInstance" />

9.2 实例工厂模式::工厂对象的方法是实例方法

  • 创建实例工厂类
public class TeacherFactoryInstance {
	public  Teacher getInstance(){
		return new Teacher(1001, "韩雪", "女");
	}
}
  • 配置文件中先创建工厂bean 在提供工厂bean的实例方法获取对象
<!-- 实例工厂模式:对象的创建由工厂对象的实例方法来实现     -->
<!--  创建实例工厂对象 -->
<bean id="factory" class="com.zhiyou100.test02.TeacherFactoryInstance"  />
<!-- 通过工厂类对象的实例方法创建bean -->
<bean id="tea2" class="com.zhiyou100.test02.Teacher"  factory-bean="factory" factory-method="getInstance" />

10 bean的生命周期

10.1 更改实体类:添加方法

package com.zhiyou100.test02;

import java.io.Serializable;

public class Teacher implements Serializable{
	....
	
	public void methodInit(){
		System.out.println("初始化方法:::public void methodInit()");
	}
	public void methodDestroy(){
		System.out.println("销毁方法:::public void methodDestroy()");
	}
	
}

10.2 在核心配置文件中 通过属性init-method和destroy-method 指定初始化方法和销毁方法

<!-- bean的生命周期:bean对象的创建 初始化 调用 及其销毁的整个过程
 1 对象创建::默认情况下 核心配置文件一加载 spring容器就创建bean的唯一对象
 2 对象初始化::对象一旦创建 spring容器就会立刻调用bean的init-method方法 对对象进行初始化
 3 对象销毁::当spring容器销毁前 会调用bean的destroy-method方法 销毁对象 释放内存
  -->
<bean id="tea1" class="com.zhiyou100.test02.Teacher" init-method="methodInit" destroy-method="methodDestroy">
    <property name="tid" value="1"/>
    <property name="tname" value="高老师"/>
    <property name="tsex" value=""/>
</bean>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值