在我对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配置文件
<bean id="bookDao" name="bookDao2" scope="prototype" class="com.Dao.impl.BookDaoImpl"/>
<bean 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();
}
}
运行结果
我认为没有去调用对应bean就不会创建对应的bean对象,但spring调用了bookDao的构造方法说明多创造了一个bean对象,是否是applicationContext.xml的所有bean不论是否被调用都会创建其对应的对象