1、本例的源代码是sun对JSF的实现:Mojarra 2.1.7 (SNAPSHOT 20120206)。
2、ManagedBean的初始化是由com.sun.faces.config.processor.ManagedBeanConfigProcessor的process方法完成。
3、ManagedBeanConfigProcessor调用了com.sun.faces.mgbean.BeanManager的register(ManagedBeanInfo beanInfo)方法来注册ManagedBean,手动注册ManagedBean需要new一个com.sun.faces.mgbean.ManagedBeanInfo对象。
4、如何得到BeanManager的实例?如下:
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext ec = context.getExternalContext();
ServletContext sc = (ServletContext)ec.getContext();
BeanManager beanManager = ApplicationAssociate.getInstance(sc).getBeanManager();
5、ManagedBean的一些相关属性也是可以一并注册的,属性的信息要放在ManagedBeanInfo对象中,具体请参看ManagedBeanInfo源代码和ManagedBeanConfigProcessor源代码。