0
点赞
收藏
分享

微信扫一扫

Spring从入门到精通(六)—实例化Bean的三种⽅式

使用无参构造方法实例化

在默认情况下,它会通过反射调⽤⽆参构造函数来创建对象。如果bean中没有默认无参构造函数,将会创建失败

<bean id="userDao" class="com.zjq.dao.impl.UserDaoImpl"/>

工厂静态方法实例化

工厂的静态方法返回Bean实例
在实际开发中,我们使⽤的对象有些时候并不是直接通过构造函数就可以创建出来的,它可能在创建的过程 中会做很多额外的操作。此时会提供⼀个创建对象的⽅法,恰好这个⽅法是static修饰的⽅法,即是此种情况。
例如,我们在做Jdbc操作时,会⽤到java.sql.Connection接⼝的实现类,如果是mysql数据库,那么⽤的就 是JDBC4Connection,但是我们不会去写JDBC4Connection connection = new JDBC4Connection() ,因为我们要注册驱动,还要提供URL和凭证信息,⽤DriverManager.getConnection ⽅法来获取连接。

public class StaticFactoryBean {
    public static UserDao createUserDao(){    
    return new UserDaoImpl();
    }
}
<bean id="userDao" class="com.zjq.factory.StaticFactoryBean" 
      factory-method="createUserDao" />

工厂实例方法实例化

工厂的非静态方法返回Bean实例
此种⽅式和上⾯静态⽅法创建其实类似,区别是⽤于获取对象的⽅法不再是static修饰的了,⽽是类中的⼀ 个普通⽅法。此种⽅式⽐静态⽅法创建的使⽤⼏率要⾼⼀些。
在早期开发的项⽬中,⼯⼚类中的⽅法有可能是静态的,也有可能是⾮静态⽅法,当是⾮静态⽅法时,即可采⽤下⾯的配置⽅式

public class DynamicFactoryBean {  
    public UserDao createUserDao(){        
        return new UserDaoImpl(); 
    }
}
<bean id="factoryBean" class="com.zjq.factory.DynamicFactoryBean"/>
<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>

本文内容到此结束了,
如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误❌疑问💬欢迎各位大佬指出。
主页:共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

在这里插入图片描述

举报

相关推荐

0 条评论