若无参构造方法不存在 , 则抛出异常BeanCreationException
- 静态工厂(了解)
我们在之前的案例中存在有对象工厂的说法 , 我们可以设置工厂并调用其方法得到bean
// 静态工厂package com.itheima.factory;import com.itheima.dao.OrderDao;import com.itheima.dao.impl.OrderDaoImpl;//静态工厂创建对象public class OrderDaoFactory {public static OrderDao getOrderDao(){System.out.println("factory setup....");return new OrderDaoImpl();}}<?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="orderDao" class="com.itheima.factory.OrderDaoFactory" factory-method="getOrderDao"/></beans>- 实例工厂(了解)
和静态工厂相同 , 但不同点是方法不是静态 , 我们需要提前创建一个bean
// 实例工厂package com.itheima.factory;import com.itheima.dao.UserDao;import com.itheima.dao.impl.UserDaoImpl;//实例工厂创建对象public class UserDaoFactory {public UserDao getUserDao(){return new UserDaoImpl();}}<?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="userFactory" class="com.itheima.factory.UserDaoFactory"/><!-- factory-bean:实例工厂本身bean factory-method:使用调用bean的方法 --><bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/></beans>- FactoryBean(重要实用)
除了我们之前自己定义的工厂外 , Spring提供了一种官方版本的FactoryBean
// FactoryBean工厂(需接口 , < >中填写数据类接口)package com.itheima.factory;import com.itheima.dao.UserDao;import com.itheima.dao.impl.UserDaoImpl;import org.springframework.beans.factory.FactoryBean;//FactoryBean创建对象public class UserDaoFactoryBean implements FactoryBean<UserDao> {//代替原始实例工厂中创建对象的方法// 返回创建对象类型为UserDaoImpl()public UserDao getObject() throws Exception {return new UserDaoImpl();}// 这里填写接口类型public Class<?> getObjectType() {return UserDao.class;}// 可以修改来修改其scope属性public boolean isSingleton() {return false;}}<?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"><!--方式四:使用FactoryBean实例化bean--><bean id="userDao" class="com.itheima.factory.UserDaoFactoryBean"/></beans>bean生命周期我们先来接单介绍生命周期相关概念:
- 生命周期:从创建到消亡的完整过程
- bean生命周期:bean从创建到销毁的整体过程
- bean生命周期控制:在bean创建后到销毁前做一些事情
接下来我们介绍生命周期控制方法:
- 数据层提供控制方法
由数据层提供方法 , 在xml配置文件中设置该方法
// 数据层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...");}}
经验总结扩展阅读
-
-
-
-
|遇到“打压排挤”你的人,老实人千万不能忍让,而要这么应对
-
-
-
面霜|补水补油抗初老!盘点那些让你相见恨晚的大牌面霜,件件超好用!
-
-
-
我叫黄中田|丈母娘生日全家坐着闲聊,女婿自觉下厨做饭,小姨子怒掀桌子
-
关键在于|“网红脸”已过时,有这几个特征的“初恋脸”正当红,你中了几个
-
-
护肤品|国货护肤品哪个好 十款便宜好用的国货护肤品推荐
-
面霜 敏感肌用哪个牌子的面霜好?这些面霜紧致皮肤,让皮肤更有弹性
-
-
-
-
-
2022年大学生秋季开学是不是要做核酸检测 大学学生返校途中有哪些要注意的
-
2022年10月31日签订合同好不好 2022年10月31日签订合同黄道吉日