文章目录
Spring学习笔记(一) - Bean 配置/实例化/生命周期
Bean 配置方法
Bean 别名配置
Bean 作用范围配置
【注解】:
- Bean适合交给容器进行管理的bean:表现层对象;业务层对象;数据层对象;工具层对象;
- Bean不适合交给容器进行管理的bean:封装实体的域对象
Bean 实例化
构造方法(常用)
-
提供可访问的构造方法(注意必须是无参构造函数)
public class BookDaoImpl implements BookDao { public BookDaoImpl() { System.out.println("book dao constructor is running ...."); } public void save() { System.out.println("book dao save ..."); } }
-
配置
<bean id="bookDao class="com.itheima.dao.impl.BookImpl"/>
静态工厂(了解)
-
静态工厂
public class OrderDaoFactory { public static OrderDao getOrderDao(){ System.out.println("factory setup...."); return new OrderDaoImpl(); } }
-
配置:注意要初始化的是静态工厂类,要实例化orderDao必须要调用静态工厂实例化orderDao的函数
<bean id="orderDao" class="com.itheima.factory.OrderDaoFactory" factory-method="getOrderDao"/>
实例工厂
-
实例工厂
public class UserDaoFactory { public UserDao getUserDao(){ return new UserDaoImpl(); } }
-
配置
<bean id="userFactory" class="com.itheima.factory.UserDaoFactory"/> <bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>
FactoryBean(超级重点:在SpringBoot整合开发中常用)
-
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的时机是调用
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
- 销毁Bean的时机是出现
第一种方法(这是一种强行关闭的方法):ctx.close();
第二种方法(代码执行完毕之后调用销毁函数):ctx.registerShutdownHook();
方法1:提供生命周期控制方法
-
提供生命周期控制方法
public class BookDaoImpl implements BookDao { public void save(){ System.out.println("book dao save..."); } public void init(){ System.out.println("book init..."); } public void destroy(){ System.out.println("book destroy..."); } }
-
配置生命周期控制方法
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" init-method="init" destroy-method="destroy"/>
方法2:接口控制
- 实现InitializingBean,DisposableBean接口
public class BookServiceImpl implements BookService,InitializingBean,DisposableBean { public void save(){ System.out.println("book service save..."); } public void afterPropertiesSet() throws Exception { System.out.println("book service init..."); } public void destroy() throws Exception { System.out.println("book service destroy..."); } }