目录
- 构造方法(常用)
- 静态工厂
- 实例工厂与 FactoryBean
- bean 生命周期控制
- 配置方法
- 接口方法
- bean 生命周期阶段
构造方法(常用)
- 提供可访问的构造方法
public class BookDaoImpl implements BookDao {public BookDaoImpl() {// ...} // 写不写这个空参构造都可以public void save() {// sout();}
}
- 配置
<bean id="bookDao"class="com.itheima.dap.impl.BookDaoImpl"/>
- 无参构造方法如果不存在,将抛出异常 BeanCreationException
静态工厂
- 静态工厂
public class OrderDaoFactory {public static OrderDao getOrderDao(){return new OrderDaoImpl();}
}
- 配置
<bean id="orderDao"factory-method="getOrderDao"class="com.itheima.factory.OrderDaoFactory"/>
实例工厂与 FactoryBean
- 实例工厂
public class UserDaoFactory {public UserDao getUserDao(){return new UserDaoImpl();}
}
- 配置
userDaoFactory 配合使用,实际无意义
getUserDao 方法名不固定
<bean id="userDaoFactory" class="com.itheima.factory.UserDaoFactory"/> <bean id="userDao"factory-mathod="getUserDao"factory-bean="userDaoFactory "/>
- FactoryBean
public class UserDaoFactoryBean implements FactoryBean<UserDao> {public UserDao getObject() throws Exception{return new UserDaoImpl();}public Class<?> getObjectType() {return UserDao.class;}
}
<beanid="userDao"class="com.itheima.factory.UserDaoFactoryBean"/>
bean 生命周期控制
在 bean 创建后到销毁前做的一些事情
配置方法
- 提供生命周期控制方法
publci class BookDaoImpl implements BookDao {public void save() {sout("book dao save");}public void init() {sout("book init");}public void destory() {sout("book destory");}
}
- 配置生命周期控制方法
<bean id="bookDao"class="com.itheima.dao.impl.BookDaoImpl"init-method="init"destroy-method="destory"/>
接口方法
public class BookServiceImpl implements BookService, InitializingBean, DisposableBean {private BookDao bookDao;public void setBookDao(BookDao bookDao) {System.out.println("set .....");this.bookDao = bookDao;}public void save() {System.out.println("book service save ...");bookDao.save();}public void destroy() throws Exception {System.out.println("service destroy");}public void afterPropertiesSet() throws Exception {System.out.println("service init");}
}
bean 生命周期阶段
-
初始化容器
- 创建对象(内存分配)
- 执行构造方法
- 执行属性注入(set操作)
- 执行bean初始化方法
-
使用bean
- 执行业务操作
-
关闭/销毁容器
- 执行 bean 销毁方法