欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring中bean的实例化

程序员文章站 2022-02-08 07:26:15
...

在面向对象(OOP)的程序中,想要使用某个对象就要先实例化该对象。同样,在spring中,想要使用容器中的Bean。也需要先实例化。下面对三种实例化的方式进行总结。

构造器实例化

指的是Spring容器通过Bean对应类的默认无参构造方法来实例化Bean。这也是最为常用的一种方式。

  1. 在Eclipse(不会安装的可以评论。单独出一篇)中创建一个web项目,在项目的lib目录下加入Spring支持和依赖的JAR包(这里采用的是传统的开发,现在公司大都采用Maven进行JAR包的统一管理,会更加的方便和高效)
  2. 在项目的src目录下,创建一个包(名称随意。只是讲解知识点。不做统一要求)。在包里创建一个类
public class User {
  public void add() {
    System.out.println("add()---------");
  }
}

3.在包下创建spring的配置文件。定义一个id为user,并通过class属性指定对应的实现类

<bean class="org.sang.User" id="user"/>

4.在包下创建测试类

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    User user = (User) context.getBean("user");
    System.out.println(user);

5.控制台的输出结果

Spring中bean的实例化

静态工厂实例化

与第一种相比,此时的Bean配置中的class属性所指的不再是Bean的实现类。而是静态工厂类,同时还需要实验factory-method来指定所创建的静态工厂的方法。

1:在项目中创建一个Bean类

public class User2 {
  public void add() {
    System.out.println("add2()---------");
  }
}

2:创建一个工厂类,并创建一个静态方法

public class User2Factory {
  public static User2 getInstance() {
    return new User2();
  }
}

3:创建配置文件



<bean id="user2" class="org.sang.User2Factory" factory-method="getInstance"/>

4:创建测试类

@Test
  public void test2() {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    User2 user = (User2) context.getBean("user2");
    user.add();
  }

5:运行结果:

Spring中bean的实例化

实例工厂实例化

小伙伴们看了静态工厂创建bean实例肯定都觉得很麻烦,事实上还有比静态工厂更麻烦的写法,那就是通过实例工厂来创建bean实例。实例工厂,顾名思义,就是我们工厂中的方法不是静态的。

1.创建一个Bean类


@Test
public void test3() {
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  User3 user = (User3) context.getBean("user3");
  user.add();
}
 

2.创建工厂类,创建一个非静态方法

public class User3Factory {
  public User3 getUser3() {
    return new User3();
  }
}

3.编写spring的配置文件

<bean class="org.sang.User3Factory" id="user3Factory"/>
<bean id="user3" factory-bean="user3Factory" factory-method="getUser3"/>

4.创建测试类

@Test
public void test3() {
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  User3 user = (User3) context.getBean("user3");
  user.add();
}

5.运行结果

Spring中bean的实例化

总结:最常用和最推荐的是第一种方式。其他两种需要了解,面试会问!