bean生命周期的控制
bean生命周期的控制
在bean创建后到销毁前做的一些事情。
//BookDao.java
public interface BookDao {
void save();
}
// BookDaoImpl.java
public class BookDaoImpl implements BookDao{
@Override
public void save() {
System.out.println("book dao save...");
}
/**
* 表示bean初始化对应的操作
*/
public void init(){
System.out.println("init...");
}
/**
* 表示bean销毁前对应的操作
*/
public void destory(){
System.out.println("destory...");
}
}
// BookService.java
public interface BookService {
void save();
}
// BookServiceImpl.java
public class BookServiceImpl implements BookService {
public BookDao bookDao;
@Override
public void save() {
System.out.println("book service save...");
}
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
// AppForLifeCycle.java
public class AppForLifeCycle {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
ctx.registerShutdownHook(); // 告诉虚拟机关闭时,要先关闭ApplicationContext
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
bookDao.save();
ctx.close(); // 这种是暴力关闭。
}
}
对应的配置文件:
<!--applicationContext.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframeworkorg/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">
<!--通过配置init-method和destory-method属性来执行init()和destory()方法-->
<bean id="bookDao" class="com.charley.dao.impl.BookDaoImpl" init-method="init" destroy-method="destory"/>
<bean id="bookService" class="com.charley.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDao"/>
</bean>
</beans>