通过 Spring 的 bean 注入方式创建对象默认是单实例的
但我们也可以通过配置xml文件来指定通过bean创建的对象是多实例的
默认情况
@Testpublic void test7(){ApplicationContext context = new ClassPathXmlApplicationContext("bean3.xml");Teacher teacher1 = context.getBean("teacher", Teacher.class);Teacher teacher2 = context.getBean("teacher", Teacher.class);System.out.println(teacher1.equals(teacher2));}
由于没有重写 equals 方法,所以这里调用的就是 Object类中的equals方法,也就是对两个对象的地址值进行比较。
可以看出,默认情况下,通过 bean 注入创建的对象就是单实例的。

配置多实例
我们可以通过在xml中配置bean的时候,指定其以多实例的方式进行创建对象。
涉及到的就是bean标签中的scope属性
- prototype:多实例方式创建对象
- singleton:单实例模式
两者的区别:
- 单例模式下,加载 Spring 配置文件的时候就会创建单实例对象
- 多例模式下,并不是在加载配置文件的时候就创建对象,而是在调用
getBean()方法的时候才会创建多实例对象。
