bean作用范围配置

bean作用范围配置

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

        // 创建多个对象,当scope属性默认为singleton,单例,只有一个实例化对象
        BookDao bookDao1 = (BookDao) ctx.getBean("bookDao");
        BookDao bookDao2 = (BookDao) ctx.getBean("bookDao");
        System.out.println(bookDao1);
        System.out.println(bookDao2);
    }
}
<!--applicationContext.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--scope属性控制是否创造单例对象-->
    <bean id="bookDao" name="dao" class="com.charley.dao.impl.BookDaoImpl" scope="prototype"/>

    <!--name给bean取别名,多个别名用空格隔开-->
    <bean id="bookService" name="service service2 booEbi" class="com.charley.service.impl.BookServiceImpl">
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

为什么bean默认为单例

可复用的单例对象不会造成很大的管理负担,且不会影响业务的执行。