我正在学习Java EE 6,我正在努力把握它的整体形象.我正在阅读关于JSF和如何添加组件.我正在从组件设置/读取值到具有@ManagedBean注释的bean.
我有一些麻烦,正确理解.什么是Managedbeans?它只是只是保持组件状态的对象吗?他们也可以有其他方法吗? EJB适合哪里?托管bean是否在EJB上调用方法?
解决方法
What is Managedbeans? Is it just just objects that holds the state of
the components?
JSF托管bean就像其他任何Java Bean一样,除了由JSF管理.换句话说,它是一个由JSF根据需要创建和销毁的bean.
JSF实现执行以下操作:
>根据需要创建和丢弃bean(因此称为“管理”
豆”)
>显示网页时读取bean属性
>在发布表单时设置bean属性
And they can have other methods as well?
是的,他们可以有尽可能多的方法,你可能想要的.但是,(你应该)理想地喜欢让你的托管bean尽可能精简.例如,它可能有一个搜索方法,但你不应该在这个方法中实际搜索但这种搜索方法唯一的目的应该是将任务委托给业务层(可能是也可能不是基于EJB的).我其他话没有重的提升.
Where does the EJBs fit in?
EJB是您的业务层,他们拥有大二头肌,并且做得很重.由于引入了EJB3 JPA,而且也是EJB的一部分. JPA是持久层.除了JPA之外的所有EJB都在EJB容器内部运行.所有Java EE投诉服务器都提供这些服务.
在典型的3层体系结构中(这些日子大多是3以上,但是3层次更容易解释)JSF是你的Web层,EJB是你的业务层和JPA,它也是EJB规范的一部分,但不需要EJB容器是您的ORM或持久层.
不要担心字容器太多,你会很快习惯它,很少你会担心它.如果您正在使用Java EE服务器,则全部为您设置.
Does the managed beans invoked methods on the EJBs?
是的,如上所述.这一切都很重.但是,JSF不必使用EJB.您可以使用任何其他框架,例如Spring,甚至可以编写简单的pojos,但这是另一个讨论区域.