<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 把对象的创建交给spring管理-->
<!--spring 对bean的管理细节
1.创建Bean的三种方式
2. bean的作用范围
3. bean的生命周期
-->
<!--创建Bean的三种方式 -->
<!--第一种方式 使用默认构造函数创建
在spring 配置文件中使用bean标签, 配以id 和class 属性之后, 没有其他属性和标签时
采用默认构造函数创建bean对象, 此时如果类中没有默认的构造函数,对象无法创建
<bean id="accountService" class="com.itcast.service.impl.AccountServiceImpl" ></bean>
-->
<!--使用普通工厂中的方法创建对象 使用某个类中的方法创建对象 存入spring容器
<bean id="instanceFactory" class="com.itcast.factory.InstanceFactory"></bean>
<bean id="accountService" factory-bean="instanceFactory" factory-method="getAccountService"></bean>
-->
<!--第三种方式 使用静态工厂中的静态方法创建对象(使用某个类中的静态方法创建对象, 存入spring容器
<bean id="accountService" class="com.itcast.factory.StaticFactory" factory-method="getAccountService" ></bean>
-->
<!--bean的作用范围调整
bean标签的scope属性:
用于指定bean的作用范围
取值:
singleton: 单例 默认
prototype: 多例
request: 作用于web应用的请求范围
session: 作用于web应用的会话范围
global-session: 作用于集群环境的会话范围,全局会话范围 不是集群时就是session
<bean id="accountService" class="com.itcast.service.impl.AccountServiceImpl" scope="prototype"></bean>
-->
<!-- bean的生命周期
单例对象
出生: 当容器创建时,对象出生
或者: 只要容器还在 对象一直在
死亡: 容器销毁 对象销毁
总结: 单例对象的声明周期和容器相同
多例对象
出生: 当我们使用对象时, spring替我们创建
或者: 对象只要是在使用过程宗 一直活着
死亡: 当对象长时间不用,且没有别的对象引用时, 由java垃圾回收器回收
-->
<bean id="accountService" class="com.itcast.service.impl.AccountServiceImpl"
scope="prototype" init-method="init" destroy-method="destroy"></bean>
</beans>