码迷,mamicode.com
首页 > 编程语言 > 详细

【Spring实战4】07---Bean的作用域

时间:2016-11-03 18:22:26      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:span   std   instance   ati   framework   元素   eth   ioc   blog   

默认情况下,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的作用域

标签:span   std   instance   ati   framework   元素   eth   ioc   blog   

原文地址:http://www.cnblogs.com/hylinux/p/6027562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!