栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

动作类的作用域可以限制为Singleton吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动作类的作用域可以限制为Singleton吗?

  1. Struts2动作由Struts容器管理。它们是ThreadLocal,因此每个请求都有其自己的Action线程安全副本。

  2. 如果使用Spring通过Struts2-Spring-plugin处理它们,则有多种用法:

    • 您可以让Struts容器实例化它们,并通过Spring处理它们以进行依赖注入,或者
    • 您可以让Spring接管控制权,并对每个Action的整个生命周期负全部责任。
      在第二种情况下:

    • 如果您在Spring XML配置文件中将动作声明为Bean,则该动作将获得默认的Spring范围,即Singleton(

      scope="singleton"
      )。这是危险的,无用的,并且99.99%的时间不是您想要的,因为您将失去框架功能的基本组成部分,因此操作将变成某种servlet,线程不安全,并且会出现许多问题;

    • 为了防止这种情况,您可以
      scope="prototype"
      在bean声明中放入,这将使Spring实例化该动作而不影响其性质。
    • 如果您在兼容Java EE 6+的容器内(例如,Jboss 7,Wildfly 8,TomEE 1.7,Glassfish 3 +,ecc …),则通过CDI处理上下文和依赖项注入。如果你愿意,你可以使用Struts2的-CDI-插件允许CDI通过处理您的行为而注入依赖
      @Inject
      注释(而不是
      @Autowired
      一个)

过去我经常使用Spring,后来发现CDI和CDI插件后,我切换了,再也没有回头,所以我投票赞成n.3



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/615699.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号