构造方法(常用)
- 提供可访问的构造方法
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;
}
}
<bean
id="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 销毁方法