SSM spring Bean实例化
bean本质就是对象,创建bean使用构造方法完成
在 Spring 框架中,Bean 的实例化是 Spring 容器管理对象生命周期的第一步。Spring 容器负责创建 Bean 的实例,并将其组装成一个完整的应用程序。以下是关于 Bean 实例化的详细说明,包括其实例化的方式、过程以及相关的配置。
Bean 实例化的方式
Spring 提供了多种方式来实例化 Bean,主要包括以下几种:
1. 通过构造器实例化
Spring 容器可以通过类的构造器来创建 Bean 的实例。这是最常见的方式之一。
2. 通过工厂方法实例化
Spring 容器可以通过工厂方法来创建 Bean 的实例。工厂方法可以是静态方法,也可以是实例方法。
3. 通过 BeanPostProcessor 实例化
BeanPostProcessor
是 Spring 提供的一个接口,允许开发者在 Bean 实例化之后对其进行进一步的处理。虽然这不是直接的实例化方式,但它可以影响 Bean 的实例化过程。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/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"><!--方式一:构造方法实例化bean--><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/><!--方式二:使用静态工厂实例化bean-->
<!-- <bean id="orderDao" class="com.itheima.factory.OrderDaoFactory" factory-method="getOrderDao"/>--><!--方式三:使用实例工厂实例化bean-->
<!-- <bean id="userFactory" class="com.itheima.factory.UserDaoFactory"/><bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>--><!--方式四:使用FactoryBean实例化bean--><bean id="userDao" class="com.itheima.factory.UserDaoFactoryBean"/></beans>
package com.itheima.dao.impl;import com.itheima.dao.BookDao;public class BookDaoImpl implements BookDao {public BookDaoImpl() {System.out.println("book dao constructor is running ....");}public void save() {System.out.println("book dao save ...");}}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/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"><!--方式一:构造方法实例化bean--><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/><!--方式二:使用静态工厂实例化bean-->
<!-- <bean id="orderDao" class="com.itheima.factory.OrderDaoFactory" factory-method="getOrderDao"/>--><!--方式三:使用实例工厂实例化bean-->
<!-- <bean id="userFactory" class="com.itheima.factory.UserDaoFactory"/><bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>--><!--方式四:使用FactoryBean实例化bean--><bean id="userDao" class="com.itheima.factory.UserDaoFactoryBean"/></beans>
Bean的生命周期:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/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:设置bean初始化生命周期回调函数--><!--destroy-method:设置bean销毁生命周期回调函数,仅适用于单例对象--><bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" init-method="init" destroy-method="destory"/><bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"><property name="bookDao" ref="bookDao"/></bean></beans>
package com.itheima.dao.impl;import com.itheima.dao.BookDao;public class BookDaoImpl implements BookDao {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...");}}