Java 生产者方法与命名类
我想知道首选哪种方式:通过完整的classname.property访问支持bean变量,还是通过producer方法直接访问属性名称?特别是如果项目规模越来越大,有很多课程、服务、门面等Java 生产者方法与命名类,java,jsf,cdi,Java,Jsf,Cdi,我想知道首选哪种方式:通过完整的classname.property访问支持bean变量,还是通过producer方法直接访问属性名称?特别是如果项目规模越来越大,有很多课程、服务、门面等 @Named public Service { List<Customer> getCustomers(); } use: <h:dataTable value="#{service.customers}" /> @Named 公共服务{ 列出getCustomers();
@Named
public Service {
List<Customer> getCustomers();
}
use:
<h:dataTable value="#{service.customers}" />
@Named
公共服务{
列出getCustomers();
}
使用:
或
公共服务{
@产生
@命名
列出getCustomers();
}
使用:
对我来说,第一个好处是,如果我必须更改jsf,我总是确切地知道由于完整的限定名,我必须修改哪个类
这对于第二种方式来说是不利的,但相比之下,在许多服务和类的情况下,这种方式更易于阅读
专家们会怎么说呢?在我看来,我选择第一条路线。重构也更容易(假设您的IDE也将在JSF页面中重命名)。虽然,老实说,我希望这是一个个人口味的事情
使用service.property的另一个优点是能够修改属性并将其反映在UI上。如果您使用的是生产者,则每个作用域只调用该生产者一次,而始终调用获取者(另一种性能权衡)。做事情有很多种方法,不管对什么有用,都要用这种方法。我会选择第一种方法,因为我喜欢总是引用与页面相关的托管Bean。我相信这是一个更容易理解的代码
public Service {
@Produces
@Named
List<Customer> getCustomers();
}
use:
<h:dataTable value="#{customers}" />