我正在研究JSF 2.0并且对基于新注释的自动布线有一定的疑问(在faces-config.xml中没有任何代码的托管bean的声明)。
就我而言,注释是伟大而容易的,但是在一个大系统中需要用一个bean替换另一个bean的问题,如果使用注释,将导致需要删除某些类(或者类似的脏黑客),虽然它可以很容易地修复faces-cofig.xml。
请分享您对此事的经验。什么应该被认为更方便,为什么?
答案 0 :(得分:3)
但问题可能会出现在一个大系统中用一个bean替换另一个bean的某种需要
这根本就不应该做。 JSF托管bean应该特定于JSF视图,不能被其他层/ API重用。如果你想在JSF和其他不了解JSF的层/ API之间共享某些数据,那么你应该把它们放在自己的类中,并使它成为JSF托管bean的属性。
所以,而不是
@ManagedBean
@SessionScoped
public class User {
private Long id;
private String username;
private String password;
// ...
}
你应该宁愿拥有
@ManagedBean
@SessionScoped
public class UserManager {
private User user;
// ...
}
和
public class User {
private Long id;
private String username;
private String password;
// ...
}
这样您就可以在所有图层之间共享User
,而无需担心图层特定的API。这也称为“数据传输对象”架构模式。
答案 1 :(得分:2)
正如在Core JavaServer Faces (Third Edition)中所说:
在JSF 2.0之前,所有bean都必须使用XML进行配置。如今,你有 注释和XML配置之间的选择。相反,XML配置 详细,但如果您想在部署时配置bean,它会很有用。
注释允许快速开发并减少冗余xml编码。一般来说,这在很大程度上取决于项目本身。