zoukankan      html  css  js  c++  java
  • Bean作用域

    Spring定义了四种作用域

    1,单例Singleton   整个应用中这个bean只有一个实例

    2,原型prototype   每次注入,或者使用应用上下文获取的时候,都会创建一个新的Bean

    3,会话Session     Web中,每一个会话创建一个实例

    4,请求Request     Web中,每一次请求创建一个实例

    单例是一个默认的作用域。

    要使用其他的作用域,使用@Scope注解,这个注解和@component以及@Bean注解一起使用,来决定定义的Bean的作用域

    1,prorotype作用域

    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

    使用常量更加安全,或者直接@Scope(“prototype”)也是可以的。

    使用xml配置:<bean id="" class="" scope=“prototype”/>

    2,会话和请求作用域

    在web中,我们希望针对某一个会话或者某一个请求指定一个新的实例,这里就会用到会话和请求作用域。

    但是如果将一个会话/请求作用域的Bean注入到单例的作用域会存在问题。

    对于单例作用域,会在Spring上下文加载的时候称将建,此时没有会话的话会话作用域不存在,无法注入,我们希望的是对于每个会话向单例作用域 bean注入不同的bean。这里需要使用代理。当真正调用代理的时候,代理会把方法分配给具体的会话作用域的bean实例、

    @Scope(value =WebApplicationContext.SCOPE_SESSION,
    proxyMode = ScopedProxyMode.INTERFACES)

    如果代理的是类 proxyMode = ScopedProxyMode.TARGET_CLASS

    <bean id=""

              class=""

              scope="session">

      <aop:scope-proxy  proxy-target-class=”false“/>

    </bean>

    xml配置,默认是class的,如果是接口,就加上proxy-target-class=“fasse”

  • 相关阅读:
    vue登录注册及token验证
    react实现登录注册
    React Native仿京东客户端实现(首页 分类 发现 购物车 我的)五个Tab导航页面
    进度条效果
    手风琴切换效果
    React实现了一个鼠标移入的菜单栏效果
    react购物车
    react实现tab切换效果
    网络缓存
    java线程面试手写题
  • 原文地址:https://www.cnblogs.com/Coder-Pig/p/7243280.html
Copyright © 2011-2022 走看看