Application容器中bean的生命周期
来源:互联网 发布:anaconda python教程 编辑:程序博客网 时间:2024/06/06 12:21
1.Spring容器只能管理singleton作用域Bean的生命周期,Spring容器知道Bean何时创建、何时初始化、何时销毁。
2.Spring初始化bean的过程,代码演示如下:
package com.learnSpring08;import org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanNameAware;import org.springframework.beans.factory.InitializingBean;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;public class Phone implements BeanNameAware,ApplicationContextAware,InitializingBean{ private int id; private String name; private double price; public Phone(){ System.out.println("Spring创建Phone对象实例"); } public void setId(int id) { System.out.println("Spring调用setId()方法执行依赖注入id值"); this.id = id; } public void setName(String name) { System.out.println("Spring 调用setName()方法执行依赖注入name值"); this.name = name; } public void setPrice(double price) { System.out.println("Spring 调用setPrice()方法执行依赖注入price"); this.price = price; } @Override public String toString() { return "Phone [id=" + id + ", name=" + name + ", price=" + price + "]"; } public void init(){ System.out.println("正在执行初始化init()方法...."); } @Override public void afterPropertiesSet() throws Exception { System.out.println("正在执行初始化方法afterPropertiesSet() "); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { System.out.println("设置bean的应用上下文"); } @Override public void setBeanName(String name) { System.out.println("设置bean的名字"); }}<?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"> <bean id="phone" class="com.learnSpring08.Phone" init-method="init"> <property name="id" value="6666"></property> <property name="name" value="华为"></property> <property name="price" value="4999"></property> </bean></beans>package com.learnSpring08;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class testPhone { @Test public void testDemo(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean07.xml"); Phone p=context.getBean("phone",Phone.class); }}控制台输出结果为:Spring创建Phone对象实例Spring调用setId()方法执行依赖注入id值Spring 调用setName()方法执行依赖注入name值Spring 调用setPrice()方法执行依赖注入price设置bean的名字设置bean的应用上下文正在执行初始化方法afterPropertiesSet() 正在执行初始化init()方法....总结:从输出结果可以看出Spring容器创建一个bean实例的全部过程。
3.Spring销毁bean的全过程
package com.learnSpring08;import org.springframework.beans.factory.DisposableBean;public class Phone implements DisposableBean{ private int id; private String name; private double price; public Phone(){ System.out.println("Spring创建Phone对象实例"); } public void setId(int id) { System.out.println("Spring调用setId()方法执行依赖注入id值"); this.id = id; } public void setName(String name) { System.out.println("Spring 调用setName()方法执行依赖注入name值"); this.name = name; } public void setPrice(double price) { System.out.println("Spring 调用setPrice()方法执行依赖注入price"); this.price = price; } @Override public String toString() { return "Phone [id=" + id + ", name=" + name + ", price=" + price + "]"; } public void close(){ System.out.println("正在执行初始化close()方法...."); } @Override public void destroy() throws Exception { System.out.println("正在执行销毁之前的方法destroy()"); }}<?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"> <bean id="phone" class="com.learnSpring08.Phone" destroy-method="close"> <property name="id" value="6666"></property> <property name="name" value="华为"></property> <property name="price" value="4999"></property> </bean></beans>package com.learnSpring08;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.AbstractApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class testPhone { @Test public void testDemo(){ ApplicationContext context=new ClassPathXmlApplicationContext("bean07.xml"); Phone p=context.getBean("phone",Phone.class); ((AbstractApplicationContext) context).close(); }}控制台输出结果为:Spring创建Phone对象实例Spring调用setId()方法执行依赖注入id值Spring 调用setName()方法执行依赖注入name值Spring 调用setPrice()方法执行依赖注入price八月 17, 2017 11:15:36 上午 org.springframework.context.support.ClassPathXmlApplicationContext doClose信息: Closing org.springframework.context.support.ClassPathXmlApplicationContext@6ed3ef1: startup date [Thu Aug 17 11:15:36 CST 2017]; root of context hierarchy正在执行销毁之前的方法destroy()正在执行初始化close()方法....
阅读全文
0 0
- Application容器中bean的生命周期
- 容器中Bean的生命周期
- 容器中Bean的生命周期
- 容器中Bean的生命周期
- Spring-----9、容器中bean的生命周期
- Spring容器中Bean的生命周期
- Spring容器中Bean的生命周期
- Spring IOC容器中Bean的生命周期
- Spring容器中Bean的生命周期
- Spring 容器中 Bean 的生命周期
- IOC容器中bean的生命周期
- Spring 容器中Bean的生命周期
- Spring IOC容器中Bean的生命周期
- spring容器中bean的生命周期
- Spring-8.容器中bean的生命周期
- IOC容器中bean的生命周期
- spring 8 bean配置--IOC容器中bean的生命周期
- IOC容器中bean的生命周期,iocbean生命周期
- Python 进阶特殊方法
- 【OpenGL】绘制三角形
- org.springframework.dao.InvalidDataAccessApiUsageException:No value supplied forthe SQL parameter已解决
- HDU1176 免费馅饼 -- 动态规划
- cocos2d_js 三消:点击交换版
- Application容器中bean的生命周期
- ora-12154 TNS: 无法解析指定的连接标识符
- CNNdroid:在Android上利用GPU加速执行CNN(卷积神经网络)
- 自定义控件零基础(2)
- UVA
- exp imp 密码特殊字符
- 关于ajax异步请求
- 【DL--17】在R中使用Keras和TensorFlow
- double free