Annotations vs managed beans declarations in faces-config.xml

前端 未结 2 576
爱一瞬间的悲伤
爱一瞬间的悲伤 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.

提交回复
热议问题