生产者方法与命名类

时间:2012-02-29 16:58:53

标签: java jsf cdi

我想知道哪种方式更受欢迎:通过完整的classname.property访问支持bean变量,还是通过producer方法直接访问属性名称?特别是如果项目变得更大,有很多课程,服务,外墙等。

@Named
public Service {
    List<Customer> getCustomers();
}

use:
<h:dataTable value="#{service.customers}" />

public Service {
    @Produces
    @Named
    List<Customer> getCustomers();
}

use:
<h:dataTable value="#{customers}" />

我的第一个好处是,如果我必须更改jsf,我总是知道由于完全限定名称我必须修改哪个类。

这可能是第二种方式的缺点,但相比之下,在许多服务和类的情况下更好地阅读。

你会有什么专家说的?

2 个答案:

答案 0 :(得分:0)

IMO,我选择第一条路线。重构也更容易(假设您的IDE也将在JSF页面中重命名)。虽然,老实说,我希望这是个人风味的东西。

使用service.property的另一个好处是能够修改属性并将其反映在UI上。如果您正在使用生产者,则每个范围仅调用该生产者一次,因为始终调用getter(另一个性能权衡)。有很多方法可以用来做事情,无论做什么都很好,就这样使用。

答案 1 :(得分:0)

我会选择第一个选项,因为我总是希望引用与页面相关的Managed Bean。我相信这是一个更容易理解的代码。