我们可以通过两种方式获取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的最佳方法是什么?
答案 0 :(得分:0)
依赖注入的一个主要好处是控制模式的反转。您可以告诉管理容器您需要哪些依赖项,而不是自己创建实例。 所以你应该尽可能坚持使用“@Inject”方法。您可以将它与字段,构造函数和设置器一起使用,因此您需要getter / setter的声明不正确。
您会注意到,当您的代码不调用任何静态工厂方法但只需要注入bean时,测试会变得更加容易。