Annotations vs managed beans declarations in faces-config.xml

前端 未结 2 575
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-06 10:16

I\'m getting my hands on JSF 2.0 and have certain doubt about new annotation based auto-wiring (declaration of managed beans without any code in faces-config.xml).

A

相关标签:
2条回答
  • 2021-01-06 10:19

    but problem may come to a certain need of substituting one bean with another in a big system

    This should simply not be done. A JSF managed bean should be specific to JSF view(s) and not be reused by other layers/APIs. If you want to share some data between JSF and other layers/APIs which are not aware about JSF, then you should rather put that data in its own class and make it a property of a JSF managed bean.

    So, instead of

    @ManagedBean
    @SessionScoped
    public class User {
        private Long id;
        private String username;
        private String password;
        // ...
    }
    

    you should rather have

    @ManagedBean
    @SessionScoped
    public class UserManager {
        private User user;
        // ...
    }
    

    and

    public class User {
        private Long id;
        private String username;
        private String password;
        // ...
    }
    

    This way you can just share User between all layers without worrying about layer-specific API's. This is also known as "Data Transfer Object" architectural pattern.

    0 讨论(0)
  • 2021-01-06 10:24

    As was said in Core JavaServer Faces (Third Edition):

    Before JSF 2.0, all beans had to be configured with XML. Nowadays, you have the choice between annotations and XML configuration. The XML configuration is rather verbose, but it can be useful if you want to configure beans at deployment time.

    Annotations allow rapid development and reduce redundant xml coding. Generally, it greatly depends on the project itself.

    0 讨论(0)
提交回复
热议问题