实例化Bean对象的三种方式

默认是无参数的构造方法(默认方式,基本上使用)

静态工厂实例化

  • 特点:工厂方法属于静态方法,可直接通过类名调用,无需先创建工厂类的对象。
  • 优势:调用起来更为简便,性能方面也稍占优势。
  • Spring 配置class属性指向静态工厂类,factory-method属性指向静态方法。
  • 示例代码
public class StaticFactory {
    public static UserService createUs() {
        return new UserServiceImpl();
    }
}
  • 配置文件

动态工厂实例化

  • 特点:工厂方法是实例方法,要先创建工厂类的对象,然后通过该对象调用方法。
  • 优势:能够借助依赖注入对工厂类进行配置,适用于更复杂的场景。
  • Spring 配置
    • 首先要配置工厂类的实例。
    • 接着引用该实例并指定工厂方法。
  • 示例代码
public class Dfactory {
    public UserService createUs() {
        return new UserServiceImpl();
    }
}
  • 配置文件


核心区别

对比维度 静态工厂 动态工厂
方法类型 静态方法 实例方法
调用方式 直接通过类名调用方法 先创建工厂实例,再调用方法
依赖注入 不支持对工厂方法进行依赖注入 可以对工厂类的属性进行配置
适用场景 简单对象的创建,不需要外部资源 需要进行复杂初始化,或者要依赖其他 Bean 的场景

总结

  • 静态工厂:适合创建简单对象,无需管理工厂类的状态。
  • 动态工厂:适合需要依赖注入或者有复杂初始化逻辑的场景。
  • 在实际开发中,优先考虑使用静态工厂,因为它更简洁。不过,如果工厂类需要维护状态或者依赖其他 Bean,那么就应该选择动态工厂

 

你可能感兴趣的:(java,sql,开发语言)