生产者方法与命名类

mem*_*und 6 java jsf cdi

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

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

use:
<h:dataTable value="#{service.customers}" />
Run Code Online (Sandbox Code Playgroud)

要么

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

use:
<h:dataTable value="#{customers}" />
Run Code Online (Sandbox Code Playgroud)

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

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

你会有什么专家说的?

Lig*_*ard 0

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

使用 service.property 的另一个优点是能够修改属性并将其反映在 UI 上。如果您使用生产者,则每个作用域仅调用该生产者一次,而 getter 则始终被调用(另一个性能权衡)。做事的方法有很多,只要有效,就用那种方法。