chapter03_高级装配_4_bean的作用域

本文详细介绍了Spring框架中Bean的四种作用域:单例、原型、会话和请求,以及如何在JavaConfig和XML中配置这些作用域。特别强调了在会话和请求作用域下如何使用代理模式解决单例bean与作用域bean之间的交互问题。
  • bean的作用域一共有 4种

    (1)单例: 整个应用中,只创建一个bean的实例(默认)

    (2)原型: 每次注入或者通过应用上下文获取时,都创建一个新实例(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

    (3)会话session: 为每个会话创建一个bean实例(WebApplicationContext.SCOPE_SESSION)

    (4)请求request: 为每个请求创建一个bean实例(WebApplicationContext.SCOPE_REQUEST)

  • 单例是默认的bean的作用域

  • Java Config使用 @Scope 配置作用域

    与@Bean合用

    示例

      @Configuration
      public class ExplicitConfig {
    
          @Bean
          @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
          public Notepad notepad() {
    
              return new Notepad();
          }
    
          @Bean
          public UniqueThing unique() {
    
              return new UniqueThing();
          }
      }
    
  • Xml使用 scope属性

    示例

      <bean class="com.myapp.Notepad" scope="prototype" />
    
  • session和requestd作用域代理

    (1)场景: 购物车ShoppingCart是一个session bean,而StoreService是一个单例 bean。StoreService__由于是单例,所以在应用上下文加载时就会被创建,此时还没有ShoppingCart实例__(因为有session来的时候才创建);另外StoreService也不应该和某个具体的ShoppingCart绑定,而是应该处理当前会话所使用的ShoppingCart实例

    (2)解决方法:

    不将真正的ShoppingCart实例注入到StoreService,而是将一个ShoppingCart bean的__代理__注入到StoreService,这个代理和原有bean的接口相同,需要调用时,代理会将调用委托给当前会话真正的bean实例(代理模式、懒解析)

    (3)Java Config设置作用域代理

    @Scope中的value属性设置作用域范围,proxyMode设置代理模式

    示例

      @Component
      @Scope(value = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.INTERFACES)
      public class ShoppingCart {
      }
    

    (4) Xml 设置作用域代理

      首先在头部添加aop命名空间,然后使用<aop:scoped-proxy>元素
    
      示例
    
          <bean class="com.myapp.UniqueThing" id="uniqueThing" scope="session">
              <aop:scoped-proxy proxy-target-class="false"/>
          </bean>
    

    (5) INTERFACES和TARGET_CLASS

    如果某个要设置作用域代理的bean是一个接口不是类的话,使用INTERFACES,这表明代理要实现该接口(这种使用Java原生的Proxy和InvocationHandler来生成动态代理,因为原生Proxy要求被代理的类必须实现一个接口);

    如果某个要设置作用域代理的bean是一个具体的类的话,使用TARGET_CLASS,这表明代理使用CGLib以生成目标类扩展的方式来生成基于类的代理

    (6) request和session作用域的bean都会遇到这个问题,如果它们需要使用代理的话

代码下载链接: https://pan.quark.cn/s/6b27a128162e 【关于IAR for Arm 9.20.1的安装指导】 IAR Systems作为业内知名的嵌入式系统开发工具供应商,其推出的IAR Embedded Workbench是一款面向多种微控制器(MCU)的集成开发环境(IDE)。本指导将系统性地阐述安装IAR for ARM 9.20.1版本的具体流程,该版本是专门为基于ARM架构的嵌入式设备量身打造的开发工具。 1. **前期准备** 在启动安装流程之前,务必核实计算机的环境配置符合以下系统要求: - 操作系统版本:Windows 7或更新版本 - 硬盘容量:确保至少有1GB的可用存储空间 - 系统兼容性:支持在32位及64位Windows操作系统上运行 2. **获取与解压缩** 需要从官方网站或者指定的链接获取"IAR For Arm 9.20.1"的压缩文件。文件下载完毕后,借助解压缩软件(例如7-Zip)将内容解压到用户指定的文件夹中。 3. **启动安装流程** 进入解压后的文件夹,找到并执行"IAREmbeddedWorkbenchInstaller.exe"文件,从而启动IAR的安装向导程序。 4. **安装向导界面** - **初始界面**:仔细阅读并同意许可协议条款,随后点击“Next”进入下一阶段。 - **组件选择**:IAR Embedded Workbench通常集成了多个功能模块,包括编译器、调试器接口等。系统默认选中所有模块,用户也可依据实际需求进行个性化选择。本例中采用默认设置,并继续点击“Next”。 - **设定安装位置**:用户可以选择采用系统推荐的安装路径,或者自定义安装位置。确认选择...
内容概要:本文围绕基于反步终端滑模控制的永磁同步电机(PMSM)位置控制器三环伺服系统展开深入研究,旨在通过Matlab/Simulink平台构建完整的控制系统仿真模型,实现对PMSM高精度位置控制的设计与验证。研究系统性地阐述了反步终端滑模控制(Backstepping Terminal Sliding Mode Control, BTSMC)的理论基础,重点剖析其在应对系统强非线性、外部未知扰动及参数摄动等挑战时所展现出的卓越鲁棒性与动态性能优势。通过构建包含电流环、速度环和位置环的三闭环级联控制架构,实现了对电机多物理量的精细化协同控制,显著提升了系统的响应速度、稳态精度和抗干扰能力。文章不仅提供了详尽的控制律推导过程,还给出了完整的Simulink模块化实现方案,涵盖了坐标变换、控制器设计、空间矢量脉宽调制(SVPWM)等关键环节,为相关领域的科研与工程实践提供了可复现、可拓展的技术范例。; 适合人群:具备自动控制理论、电机学基础知识及Matlab/Simulink仿真操作经验的研究生、高校教师、科研院所研究人员以及从事高性能电机驱动、伺服系统开发的工程技术专业人员。; 使用场景及目标:①服务于高等院校和科研机构中关于现代非线性控制理论的教学案例与课题研究;②为工业自动化领域中高精度数控机床、机器人关节、精密仪器等对伺服性能有严苛要求的应用场景提供先进的控制策略参考与技术实现路径;③支撑高水平学术论文的复现、不同先进控制算法(如传统PID、普通滑模、自适应控制等)的性能对比分析,并为进一步提出创新性复合控制方法奠定研究基础; 阅读建议:建议读者在学习过程中紧密结合文中的数学推导与Simulink仿真模型,逐模块理解控制策略的实现逻辑,特别关注滑模面的设计、李雅普诺夫函数的构造、控制器增益参数的整定方法以及三环之间的动态耦合关系。应充分利用所提供的仿真资源进行反复调试与参数优化,通过观察不同工况下的系统响应曲线,深入探究控制算法的内在机理,从而有效提升对复杂非线性系统建模、分析与设计的综合能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值