2

在我的应用程序中,我们在某些地方同时使用 @ManagedBean 注释来处理 Person bean 和我们在 faces-confing.xml 中定义的同一个 Person bean,如下所示。

@ManagedBean("name=person")
 @SessionScoped
 Public class Person{


}

面孔-config.xml

<managed-bean>
     <managed-bean-name>person</managed-bean-name>
     <managed-bean-class>com.test.sample.Person</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

我的问题是这种方法是否为 Person bean 创建了两个实例,或者我这样做是否重要?如果我对我的应用程序中的每个 Bean 都这样做,这对我的应用程序的性能有什么影响吗?

4

1 回答 1

5

为这种情况定义了一个优先级。@ManagedBean注释避免了必须在其中配置条目,faces-config.xml但如果两者都有,则<managed-bean>条目将覆盖注释。

在您的情况下,将只有一个实例像您的faces-config.xml条目一样配置。在您的情况下,两种方法的配置方式相同,但是,如果您将faces-config.xml条目更改为类似

<managed-bean>
     <managed-bean-name>personBean</managed-bean-name>
     <managed-bean-class>com.test.sample.Person</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

您的 bean 将在personBean而不是person(注解定义的名称)下注册。

于 2012-10-05T18:36:19.273 回答