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实例
另见: