14.笔记JAVA Spring框架学习————Bean生命周期
2017-11-08 20:08
453 查看
14.笔记JAVA Spring框架学习————Bean生命周期
• Spring IOC 容器可以管理 Bean 的生命周期, Spring 允许在 Bean 生命周期的特定点执行定制的任务.
• Spring IOC 容器对 Bean 的生命周期进行管理的过程:
– 通过构造器或工厂方法创建Bean 实例
– 为 Bean 的属性设置值和对其他Bean 的引用
– 调用 Bean 的初始化方法
– Bean 可以使用了
– 当容器关闭时, 调用 Bean 的销毁方法
• 在 Bean 的声明里设置init-method 和 destroy-method 属性, 为 Bean 指定初始化和销毁方法.
Bean后置处理器
• Spring IOC 容器对 Bean 的生命周期进行管理的过程:
– 通过构造器或工厂方法创建Bean 实例
– 为 Bean 的属性设置值和对其他Bean 的引用
– 将 Bean 实例传递给 Bean 后置处理器的postProcessBeforeInitialization 方法
– 调用 Bean 的初始化方法
– 将 Bean 实例传递给 Bean 后置处理器的postProcessAfterInitialization方法
– Bean 可以使用了
– 当容器关闭时, 调用 Bean 的销毁方法
<!--
测试 SpEL:
可以为属性进行动态的赋值(了解)-->
<bean
id="girl"class="User"
init-method="init"destroy-method="destroy">
<property
name="userName"value="周迅"></property>
</bean>
其中init-method指定了初始化函数,destroy-method指定了关闭回调函数。
Main.java内容如下:
import java.sql.SQLException;
import
javax.sql.DataSource;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.AbstractApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
import
com.mchange.v2.c3p0.DataSources;
publicclass Main {
publicstaticvoid
main(String[]args)
throws SQLException {
//1.
创建Spring
的 IOC
容器
ClassPathXmlApplicationContext
apx =
new ClassPathXmlApplicationContext("app.xml");
User
user = (User)
apx.getBean("girl");
System.out.println(user);
apx.close();
}
}
其中User.java中是包含init和destory函数的如上篇笔记。
然后执行如下:
User'sConstrutor...
initmethod...
User[userName=周迅, cars=null]
八月 13, 2016 9:32:22
下午 org.springframework.context.support.ClassPathXmlApplicationContextdoClose
信息: Closingorg.springframework.context.support.ClassPathXmlApplicationContext@1a6c5a9e:startup date [Sat Aug 13 21:32:22 CST 2016]; root of context hierarchy
destroymethod...
主要是调用postProcessBeforeInitialization,postProcessAfterInitialization函数。
更细腻的进行定制。
先在项目创建一个新类,蛤蟆命名为BeanProcessor.java, Add –>BeanPostProcessor
BeanProcessor.java内容如下:
import org.springframework.beans.BeansException;
importorg.springframework.beans.factory.config.BeanPostProcessor;
public class BeanProcessor implementsBeanPostProcessor {
@Override
publicObject postProcessAfterInitialization(Object arg0, String arg1) throwsBeansException {
//TODO Auto-generated method stub
System.out.println("after"+arg0+ " " + arg1);
returnarg0;
}
@Override
publicObject postProcessBeforeInitialization(Object arg0, String arg1) throwsBeansException {
//TODO Auto-generated method stub
System.out.println("before"+arg0+ " " + arg1);
returnarg0;
}
}
在app.xml中定义如下:
<!--
测试 SpEL:
可以为属性进行动态的赋值(了解)-->
<bean
id="girl"class="User"
init-method="init"destroy-method="destroy">
<property
name="userName"value="周迅"></property>
</bean>
<!--
配置 bean
后置处理器:
不需要配置 id
属性, IOC
容器会识别到他是一个 bean
后置处理器,
并调用其方法-->
<bean
class="BeanProcessor"></bean>
Main.java还是和测试一一样如下:
import java.sql.SQLException;
import
javax.sql.DataSource;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.AbstractApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
import
com.mchange.v2.c3p0.DataSources;
publicclass Main {
publicstaticvoid
main(String[]args)
throws SQLException {
//1.
创建Spring
的 IOC
容器
ClassPathXmlApplicationContext
apx =
newClassPathXmlApplicationContext("app.xml");
User
user = (User)
apx.getBean("girl");
System.out.println(user);
apx.close();
}
}
执行如下:
User'sConstrutor...
beforeUser[userName=周迅, cars=null] girl
initmethod...
afterUser[userName=周迅, cars=null] girl
User[userName=周迅, cars=null]
八月 13, 2016 10:00:35
下午 org.springframework.context.support.ClassPathXmlApplicationContextdoClose
信息: Closingorg.springframework.context.support.ClassPathXmlApplicationContext@1a6c5a9e:startup date [Sat Aug 13 22:00:35 CST 2016]; root of context hierarchy
destroymethod...
• Spring IOC 容器可以管理 Bean 的生命周期, Spring 允许在 Bean 生命周期的特定点执行定制的任务.
• Spring IOC 容器对 Bean 的生命周期进行管理的过程:
– 通过构造器或工厂方法创建Bean 实例
– 为 Bean 的属性设置值和对其他Bean 的引用
– 调用 Bean 的初始化方法
– Bean 可以使用了
– 当容器关闭时, 调用 Bean 的销毁方法
• 在 Bean 的声明里设置init-method 和 destroy-method 属性, 为 Bean 指定初始化和销毁方法.
Bean后置处理器
• Spring IOC 容器对 Bean 的生命周期进行管理的过程:
– 通过构造器或工厂方法创建Bean 实例
– 为 Bean 的属性设置值和对其他Bean 的引用
– 将 Bean 实例传递给 Bean 后置处理器的postProcessBeforeInitialization 方法
– 调用 Bean 的初始化方法
– 将 Bean 实例传递给 Bean 后置处理器的postProcessAfterInitialization方法
– Bean 可以使用了
– 当容器关闭时, 调用 Bean 的销毁方法
测试一
在app.xml配置如下:<!--
测试 SpEL:
可以为属性进行动态的赋值(了解)-->
<bean
id="girl"class="User"
init-method="init"destroy-method="destroy">
<property
name="userName"value="周迅"></property>
</bean>
其中init-method指定了初始化函数,destroy-method指定了关闭回调函数。
Main.java内容如下:
import java.sql.SQLException;
import
javax.sql.DataSource;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.AbstractApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
import
com.mchange.v2.c3p0.DataSources;
publicclass Main {
publicstaticvoid
main(String[]args)
throws SQLException {
//1.
创建Spring
的 IOC
容器
ClassPathXmlApplicationContext
apx =
new ClassPathXmlApplicationContext("app.xml");
User
user = (User)
apx.getBean("girl");
System.out.println(user);
apx.close();
}
}
其中User.java中是包含init和destory函数的如上篇笔记。
然后执行如下:
User'sConstrutor...
initmethod...
User[userName=周迅, cars=null]
八月 13, 2016 9:32:22
下午 org.springframework.context.support.ClassPathXmlApplicationContextdoClose
信息: Closingorg.springframework.context.support.ClassPathXmlApplicationContext@1a6c5a9e:startup date [Sat Aug 13 21:32:22 CST 2016]; root of context hierarchy
destroymethod...
测试二
Bean后处理使用。主要是调用postProcessBeforeInitialization,postProcessAfterInitialization函数。
更细腻的进行定制。
先在项目创建一个新类,蛤蟆命名为BeanProcessor.java, Add –>BeanPostProcessor
BeanProcessor.java内容如下:
import org.springframework.beans.BeansException;
importorg.springframework.beans.factory.config.BeanPostProcessor;
public class BeanProcessor implementsBeanPostProcessor {
@Override
publicObject postProcessAfterInitialization(Object arg0, String arg1) throwsBeansException {
//TODO Auto-generated method stub
System.out.println("after"+arg0+ " " + arg1);
returnarg0;
}
@Override
publicObject postProcessBeforeInitialization(Object arg0, String arg1) throwsBeansException {
//TODO Auto-generated method stub
System.out.println("before"+arg0+ " " + arg1);
returnarg0;
}
}
在app.xml中定义如下:
<!--
测试 SpEL:
可以为属性进行动态的赋值(了解)-->
<bean
id="girl"class="User"
init-method="init"destroy-method="destroy">
<property
name="userName"value="周迅"></property>
</bean>
<!--
配置 bean
后置处理器:
不需要配置 id
属性, IOC
容器会识别到他是一个 bean
后置处理器,
并调用其方法-->
<bean
class="BeanProcessor"></bean>
Main.java还是和测试一一样如下:
import java.sql.SQLException;
import
javax.sql.DataSource;
import
org.springframework.context.ApplicationContext;
import
org.springframework.context.support.AbstractApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
import
com.mchange.v2.c3p0.DataSources;
publicclass Main {
publicstaticvoid
main(String[]args)
throws SQLException {
//1.
创建Spring
的 IOC
容器
ClassPathXmlApplicationContext
apx =
newClassPathXmlApplicationContext("app.xml");
User
user = (User)
apx.getBean("girl");
System.out.println(user);
apx.close();
}
}
执行如下:
User'sConstrutor...
beforeUser[userName=周迅, cars=null] girl
initmethod...
afterUser[userName=周迅, cars=null] girl
User[userName=周迅, cars=null]
八月 13, 2016 10:00:35
下午 org.springframework.context.support.ClassPathXmlApplicationContextdoClose
信息: Closingorg.springframework.context.support.ClassPathXmlApplicationContext@1a6c5a9e:startup date [Sat Aug 13 22:00:35 CST 2016]; root of context hierarchy
destroymethod...
相关文章推荐
- JAVA学习笔记14——Spring框架第一章
- 15.笔记JAVA Spring框架学习————通过工厂配置Bean
- 12.笔记JAVA Spring框架学习————Bean使用外部属性文件
- 17.笔记JAVA Spring框架学习————基于注解配置Bean之一
- 16.笔记JAVA Spring框架学习————通过FactoryBean配置Bean
- 7.笔记JAVASpring框架学习——Bean配置独立的集合属性
- 8.笔记JAVASpring框架学习——Bean配置使用P命名空间
- 11.笔记JAVA Spring框架学习————Bean作用域
- 13.笔记JAVA Spring框架学习————Bean使用SpEL
- 18.笔记JAVASpring框架学习————基于注解配置Bean之二
- JAVA学习笔记14——Spring框架第一章
- Spring框架学习笔记 bean的常见操作以及生命周期
- Java框架spring 学习笔记(三):Bean 的生命周期
- Java 学习笔记04:Spring XML配置文件Bean
- Java学习笔记38:通过Spring Bean 注入static变量,来设计一套适合测试,开发,生产环境的配置项
- 【Java学习笔记】对象生命周期
- Java学习笔记之线程的生命周期
- java学习笔记《java面向对象编程》——类的生命周期
- Java 学习笔记14:Spring 数据库数据源DBCP配置说明
- servlet/jsp/javabean学习笔记