Jsf 四季豆注射液

Jsf 四季豆注射液,jsf,cdi,jsf-2.2,managed-bean,Jsf,Cdi,Jsf 2.2,Managed Bean,这是在@SessionScopedbean中插入@ApplicationScopedbean的正确方法吗?这会导致我的应用程序范围的bean存储在每个用户的会话中吗 我有一个应用程序范围的bean,它包含我们在所有系统用户之间共享的一些值,现在我需要在会话bean的一个方法中获取这些值。在另一个bean中注入相同或更广范围的bean在JSF或CDI bean中都是完全合法和正确的,就像您提供的示例一样 CDIBeans和JSF托管bean在这方面的区别在于,当您尝试在另一个bean中注入一个范围

这是在
@SessionScoped
bean中插入
@ApplicationScoped
bean的正确方法吗?这会导致我的应用程序范围的bean存储在每个用户的会话中吗


我有一个应用程序范围的bean,它包含我们在所有系统用户之间共享的一些值,现在我需要在会话bean的一个方法中获取这些值。

在另一个bean中注入相同或更广范围的bean在JSF或CDI bean中都是完全合法和正确的,就像您提供的示例一样

CDIBeans和JSF托管bean在这方面的区别在于,当您尝试在另一个bean中注入一个范围较窄的bean时(例如,将
@RequestScoped
bean注入
@SessionScoped
one),这只有在您使用CDI
@Named
bean时才可能发生,但在使用JSF
@ManagedBean
时不可能

cdibean之所以能够实现这一点,是因为它们的机制比JSF机制更灵活(基于调用setter以直接注入物理实例)

此代理机制允许CDI容器将引用传递给代理而不是注入的bean(除非bean具有默认作用域
@Dependent
)。因此,该代理将负责处理对注入bean的所有调用,并将它们转发/重定向到正确的bean实例

另见:

    • 在另一个bean中注入相同或更广范围的bean在JSF或CDIBeans中都是完全合法和正确的,就像您提供的示例一样

      CDIBeans和JSF托管bean在这方面的区别在于,当您尝试在另一个bean中注入一个范围较窄的bean时(例如,将
      @RequestScoped
      bean注入
      @SessionScoped
      one),这只有在您使用CDI
      @Named
      bean时才可能发生,但在使用JSF
      @ManagedBean
      时不可能

      cdibean之所以能够实现这一点,是因为它们的机制比JSF机制更灵活(基于调用setter以直接注入物理实例)

      此代理机制允许CDI容器将引用传递给代理而不是注入的bean(除非bean具有默认作用域
      @Dependent
      )。因此,该代理将负责处理对注入bean的所有调用,并将它们转发/重定向到正确的bean实例

      另见:

      你的问题很模糊。你能确切地说明你想做什么吗?此外,将应用程序范围的bean注入会话bean是非常安全的,反之亦然。您好,Maress,您已经回答了我的问题,即注入应用程序范围的int会话bean是非常安全的。如果您能回答这个问题,我将不胜感激,并将其标记为已回答,但如果您能给出更多解释,说明为什么它是安全的,我将不胜感激。您的问题相当模糊。你能确切地说明你想做什么吗?此外,将应用程序范围的bean注入会话bean是非常安全的,反之亦然。您好,Maress,您已经回答了我的问题,即注入应用程序范围的int会话bean是非常安全的。如果您能回答这个问题,我将不胜感激,并将其标记为已回答,但如果您能给出更多解释,说明为什么它是安全的,我将非常感激。这在JSF中也是可能的。在JSF托管bean中,只有另一种方法(在应用程序范围的bean中注入会话范围的bean)是不可能的。这确实是因为只有在CDI中才可能出现代理模式的原因。@BalusC发生的事情是,我在回答时的想法正好相反(他正在注入一个范围更窄的bean)。感谢您的指导,例如,如果我在ApplicationScoped bean中注入一个VS bean(ViewScoped),并且有多个VS bean,1-将注入哪一个?2-是否存在没有VS bean可注入的情况?如果是这样,会发生什么呢?在JSF中也是可能的。在JSF托管bean中,只有另一种方法(在应用程序范围的bean中注入会话范围的bean)是不可能的。这确实是因为只有在CDI中才可能出现代理模式的原因。@BalusC发生的事情是,我在回答时的想法正好相反(他正在注入一个范围更窄的bean)。感谢您的指导,例如,如果我在ApplicationScoped bean中注入一个VS bean(ViewScoped),并且有多个VS bean,1-将注入哪一个?2-是否存在没有VS bean可注入的情况?如果是,会发生什么?