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默认为单例
可复用的单例对象不会造成很大的管理负担,且不会影响业务的执行。
- 适合交个容器进行管理的bean
- 表现层对象
- 业务层对象
- 数据层对象
- 工具对象
- 不适合交个容器进行管理的bean
- 封装实体的域对象