获取另一个bean的首选方法:评估EL或@Inject

时间:2016-02-28 09:17:27

标签: jsf cdi el

我们可以通过两种方式获取jsf bean:

JobApplicant jobApplicant = (JobApplicant) FacesUtils.getManagedBean("jobApplicant");

内置财产

@Inject
JobApplicant jobApplicant //getter and setter required

首先,我们可以在方法中获取bean,因此不会分配内存。如果它是类成员(使用Inject),它总是需要一些内存来保存对该bean的引用。同样在这种情况下,jobApplicant的范围必须至少不短于注入jobApplicant的外部bean的范围。但是在使用utils的情况下,范围可能是view,例如,它比外部bean的session范围短,是吗?

获取bean的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

依赖注入的一个主要好处是控制模式的反转。您可以告诉管理容器您需要哪些依赖项,而不是自己创建实例。 所以你应该尽可能坚持使用“@Inject”方法。您可以将它与字段,构造函数和设置器一起使用,因此您需要getter / setter的声明不正确。

您会注意到,当您的代码不调用任何静态工厂方法但只需要注入bean时,测试会变得更加容易。