在我对bean实例化时,我只创建了一个bean对象,但spring仍旧创建了其他bean对象

在我对bean实例化时,我只创建了一个bean对象,但spring仍旧创建了其他bean对象,这是为什么
以下是一个我之前创建的一个接口实现类,自己写的无参构造方法

public class BookDaoImpl implements BookDao {

    public BookDaoImpl() {
        System.out.println("book dao constructor is running ...");
    }

    public void save() {
        System.out.println("book dao save...");
    }
}

以下是一个利用静态工厂实例化bean

public class OrderDaoFactory {
    public static OrderDao getOrderDao(){
        return new OrderDaoImpl();
    }
}

applicationContext.xml配置文件

id="bookDao" name="bookDao2" scope="prototype" class="com.Dao.impl.BookDaoImpl"/>
id="orderDao" class="com.factory.OrderDaoFactory" factory-method="getOrderDao"/>

测试类

public class TestInstanceOrder {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

        OrderDao orderDao = (OrderDao) ctx.getBean("orderDao");

        orderDao.save();
    }
}

运行结果

img

我认为没有去调用对应bean就不会创建对应的bean对象,但spring调用了bookDao的构造方法说明多创造了一个bean对象,是否是applicationContext.xml的所有bean不论是否被调用都会创建其对应的对象

当然不是了,你这样的配置都是被spring 先加载进来的。
如果你要 Bean 等到 调用时才加载并实例化,你的bean 配置需要设置懒加载

<bean id="" class="l" lazy-init="true"></bean>