bean的生命周期的控制的两种方法
1、第一种:使用配置的方式(标准开发)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
<!--1、导入spring的坐标spring-context,对应的版本5.2.1 release-->
<!-- 2、配置bean -->
<bean id="userDao" class="com.test.dao.impl.UserDaoImpl" init-method="init" destroy-method="destory"/>
<bean id="userService" class="com.test.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
2、第二种:使用接口的方式
package com.test.service.impl;
import com.test.dao.UserDao;
import com.test.dao.impl.UserDaoImpl;
import com.test.service.UserService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class UserServiceImpl implements UserService, InitializingBean, DisposableBean {
private UserDao userDao;
public void save() {
System.out.println("user service is running....");
// this.save();
userDao.save();
}
public void setUserDao(UserDaoImpl userDao) {
this.userDao = userDao;
}
public void destroy() throws Exception {
System.out.println("service destory");
}
public void afterPropertiesSet() throws Exception {
System.out.println("service init");
}
}
3、bean的销毁:
容器关闭前出发bean的销毁,关闭容器的方式:
(1)ConfigurableApplicationContext接口close()操作;
(2)ConfigurableApplicationContext接口registerShutdownHoo()操作;
package com.test;
import com.test.dao.UserDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class App {
public static void main(String[] args) {
//获取IOC容器
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取bean id
UserDao userDao = (UserDao)ctx.getBean("userDao");
userDao.save();
// ctx.close();
ctx.registerShutdownHook();
}
}