首页 > 代码库 > 【Spring实战4】07---Bean的作用域
【Spring实战4】07---Bean的作用域
默认情况下,Spring应用上下文所有bean都是单例模式创建,也就是,不管给定的一个bean被注入到别处多少次,但都是同一个实例
Spring为Bean定义了多种作用域
单例 Singleton 在整个应用中,只创建bean的一个实例
原型 Prototype 每次注入或者通过Spring应用上下文获取的时候,都会创建新的bean实例
会话 Session 在web应用 中,为每个会话创建一个bean实例
请求 request 在web应用中,为每个请求创建一个bean实例
在Javaconfig中可以使用@Scope注解表明
/** * Created by niuh on 11/3/2016. */@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
//如果为web应用则应该为
//@Scope(WebApplicationContext.SCOPE_SEEION)
@Configuration @Profile("dev") class DevelopmentProfileConfig { @Bean(destroyMethod = "shutdown") public DataSource dataSource() { return (DataSource) new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.H2) .addScript("classpath.sql") .addScript("testdata.sql") .build(); } }
而在xml中声明作用域时,可以通过<bean>元素的scope属性设置bean的作用域,如下
<?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"> <bean id="car" class="nh.spring.ioc.beans.Car" scope="prototype"> <property name="brand" value="Ca11"/> <property name="color" value="blue"/> </bean></beans>
【Spring实战4】07---Bean的作用域
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。