zoukankan      html  css  js  c++  java
  • 【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>
  • 相关阅读:
    python的深拷贝和浅拷贝
    jquery的each循环
    python开发要求
    Python的进程和线程(二)——IO密集型任务
    Python的进程和线程(一)——计算密集型任务
    Python常用模块(一)--argparse模块
    Chrome Headless模式(二)——Python+selenium+headerless
    beyond compare 命令行批量比对图片
    Chrome Headless模式(一)
    python实现在mac笔记本上更换桌面背景
  • 原文地址:https://www.cnblogs.com/hylinux/p/6027562.html
Copyright © 2011-2022 走看看