首页 > 代码库 > 半夜思考之查漏补缺, 在 Spring中, 所有的bean都是Spring创建的吗?

半夜思考之查漏补缺, 在 Spring中, 所有的bean都是Spring创建的吗?

      Spring 是一个 bean 容器, 负责 bean的创建, 那么所有的 bean对象都是 Spring 容器创建的吗? 答案是否定的.

但是乍一想, 好像所有的对象都是 Spring 容器负责创建并注入的, 今天在看书的时候, 看到了创建 bean 的三种方式, 分别是 :

  1. 使用构造器创建 bean实例
  2. 使用静态工厂方法创建 bean
  3. 调用实例工厂方法创建 bean

第一个是 Spring 使用反射创建 bean 对象, class属性指定的是 Bean实现类 ;

第二个的class属性指定的是静态工厂类, 同时还需要指定静态工厂方法 factory-method属性, 并且要提供静态工厂方法需要的参数, 以及被创建对象所需要的参数( 如果有的话 ), 创建 bean 对象的语句写在静态工厂方法里, 将bean对象以返回值的形式返回給 Spring 容器 ;


第三个比第二个多个一个工厂实例对象 , 也就是factory-bean属性 , 其他的和静态工厂的做法一样, 创建 bean 对象的语句写在工厂方法里, 将bean对象以返回值的形式返回給 Spring 容器 ;

 

半夜思考之查漏补缺, 在 Spring中, 所有的bean都是Spring创建的吗?