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>