目录
1.spring 实例化 bean 的几种方式
2.spring 中bean 的作用域
3.spring 管理的bean 在什么时候初始化 和 销毁
4.spring bean 的 init-method destroy-method
1.下面 我们来看看spring的 实例化bean的 几种方式
1.使用类构造器实例化bean
2 使用 静态工厂方法来实例化
3. 使用 实例工厂方式来实例化bean
//测试
2.弄了这么多 那么spring 中每次 getBean();这个方法返回的对象 是同一个吗??
//以上 说明 是同一个对象 ,说明了spring 默认 的bean 是 单例模式 Singleton
spring bean 的作用域 scope
Singleton
prototype:每次从容器获取的bean 都是一个新的对象. (原型)
//对于 web 应用来说
request
session
global session
//修改spring 配置 来测试
//说明 设置 scope="prototype" 后变成了 原型 每次 获取都是不同的对象
3.看看 spring 在什么时候 初始化bean (在 配置 的bean对应的类中 加个 构造方法 就可以测试了)
1 先测试 singleton 范围
// 发现 打印 出了 "我被实例化了!" 说明 spring 默认情况下 是加载 spring配置文件的时候就初始化了 bean
2.在来测试 scope="prototype"
// 发现 打印出 "开始调用 getBean方法" 之后 才打印出 "我被实例化了!" "我被实例化了!"
// 说明 scope="prototype" 是在 getBean方法后 才被实例化
3.再来看延迟初始化 lazy-init="true";
// 发现 打印出 "开始调用 getBean方法" 之后 才打印出 "我被实例化了!"
说明 lazy-init="true" 也是在 getBean方法后才被初始化 但是 使用的是同一个对象 所以 只打印出了一句 "我被实例化了!" .而scope="prototype" 是原型 所以 打印出了 两句 "我被实例化了!" .
4.如果 我们想在 spring 初始化bean实例后 执行一个方法 , 或者 在 bean销毁后 执行一个方法 (比如 资源的打开 和 使用完后 资源的关闭:写到这 大家是不是 就想到了 打开数据库连接 和 关闭呀)
使用 这两个属性 init-method , destroy-method
// 发现 init 和 destroy 方法 都执行了
1.spring 实例化 bean 的几种方式
2.spring 中bean 的作用域
3.spring 管理的bean 在什么时候初始化 和 销毁
4.spring bean 的 init-method destroy-method
1.下面 我们来看看spring的 实例化bean的 几种方式
1.使用类构造器实例化bean
2 使用 静态工厂方法来实例化
3. 使用 实例工厂方式来实例化bean
//测试
2.弄了这么多 那么spring 中每次 getBean();这个方法返回的对象 是同一个吗??
//以上 说明 是同一个对象 ,说明了spring 默认 的bean 是 单例模式 Singleton
spring bean 的作用域 scope
Singleton
prototype:每次从容器获取的bean 都是一个新的对象. (原型)
//对于 web 应用来说
request
session
global session
//修改spring 配置 来测试
//说明 设置 scope="prototype" 后变成了 原型 每次 获取都是不同的对象
3.看看 spring 在什么时候 初始化bean (在 配置 的bean对应的类中 加个 构造方法 就可以测试了)
1 先测试 singleton 范围
// 发现 打印 出了 "我被实例化了!" 说明 spring 默认情况下 是加载 spring配置文件的时候就初始化了 bean
2.在来测试 scope="prototype"
// 发现 打印出 "开始调用 getBean方法" 之后 才打印出 "我被实例化了!" "我被实例化了!"
// 说明 scope="prototype" 是在 getBean方法后 才被实例化
3.再来看延迟初始化 lazy-init="true";
// 发现 打印出 "开始调用 getBean方法" 之后 才打印出 "我被实例化了!"
说明 lazy-init="true" 也是在 getBean方法后才被初始化 但是 使用的是同一个对象 所以 只打印出了一句 "我被实例化了!" .而scope="prototype" 是原型 所以 打印出了 两句 "我被实例化了!" .
4.如果 我们想在 spring 初始化bean实例后 执行一个方法 , 或者 在 bean销毁后 执行一个方法 (比如 资源的打开 和 使用完后 资源的关闭:写到这 大家是不是 就想到了 打开数据库连接 和 关闭呀)
使用 这两个属性 init-method , destroy-method
// 发现 init 和 destroy 方法 都执行了