当前位置: 首页 > 面试题库 >

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

方和宜
2023-03-14
问题内容

我的问题不仅是将动作类的作用域限定为单例,而且我还想知道哪种是最佳实践。在Struts2和Spring的上下文中。控制器和模型的VIEW最佳范围(例如请求或会话)。


问题答案:
  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



 类似资料:
  • 问题内容: 我在Controller内部有一个Action函数,该函数被AJAX调用。该操作采用1个参数。在客户端,我构造了一个JSON对象,该对象应序列化为该1参数。我遇到的问题是参数类被声明为抽象。因此,它不能被实例化。 当AJAX击中该动作时,我得到以下信息: 无法创建抽象类。 堆栈跟踪: [MissingMethodException:无法创建抽象类。] System.RuntimeTyp

  • 在 Stuts2 中,我正在使用 Tiles 插件为网站(菜单、页脚、页眉等)创建在每个页面上一致的布局。 现在每个磁贴只是一个静态的超文本标记语言内容。 是否可以通过每次呈现页脚时调用<code>Footer</code>动作类来使平铺更动态?例如:从数据库获取页脚内容。 如果我在应用程序中的每个页面的action类中都这样做,这将导致非常不可用的代码... 所以也许从瓷砖的角度来看是可能的?

  • 本文向大家介绍js的哪些操作可以改变作用域链?相关面试题,主要包含被问及js的哪些操作可以改变作用域链?时的应答技巧和注意事项,需要的朋友参考一下 比较有名的是的间接调用:

  • 我有两个Jenkins工作流作业,它们以不同的参数启动同一个作业,即它们构建的分支。后一项工作是在多个平台上构建项目。“头”作业,即Workflow作业可以在不同的机器上启动。此外,设置中还有两台linux机器。 有时会发生这样的情况,其中一个(比如master)在其中一台linux机器上启动,另一个在另一台上启动。他们都必须在linux机器上构建一个目标,因为他们都很忙,所以两个作业都停滞不前。

  • 现在,我有了一个扩展上述抽象类的实现类 请注意,我正在将实现类中的2个抽象方法的作用域从protected更改为public,如何限制实现类修改作用域。 欢迎任何设计更改、建议或模式。

  • 我想知道是否有可能限制用户访问从模板库中推出的谷歌表格中的某些选项卡? 在我们公司,我们有一个销售部门,使用基于谷歌表格的计算器。为了确保卖家总是使用当前版本的计算器(这很重要,因为产品的参数会随着时间的推移而变化),我已经将其放在谷歌表格模板库中,并定期更新。 问题在于,表格中的一个标签不应提供给卖方,因为它包含关于半成品和材料价格的信息,因此存在他们干扰这些数据并以较低价格向客户提供产品的风险

  • 一般而言,在花括号里面声明的变量名会限制在括号外的可见性。但是这对于C++98风格的enums中的枚举元素并不成立。枚举元素和包含它的枚举类型同属一个作用域空间,这意味着在这个作用域中不能再有同样名字的定义: enum Color { black, white, red}; // black, white, red 和

  • 我问这个问题是关于我的问题: spring单例范围 Spring单例在参考手册中根据每个豆子的容器进行定义。 每个容器意味着如果我们喜欢: Beans.xml: 然后将出来true.Means都指向同一个实例。 对于每个豆子的短语部分,每个容器每个豆子我有点困惑。我在每个豆子的跟随是正确的: 如果我们喜欢 Beans.xml: 那么将显示为false。意味着它们是两个不同的实例?