0

我是 Spring 新手,我遇到了需要帮助的情况。我的场景是我有一个像这样的特定模块的 bean 定义。

<bean name="ruleEngineAction" class="com.xxxxx.yyyy.UserAction" scope="prototype">
<property name="userManager">
    <ref bean="userManager" />
</property>
<property name="userDto">
        <ref bean="userDto" />
</property>
</bean>

现在在这个 bean 中,我想再使用一个属性,但这取决于应用程序流程,例如

<property name="roleManager">
     <ref bean="roleManager">
</property>

所以我应该在 bean 定义本身中包含这个属性,或者我可以在代码中动态地执行它,因为我不希望这个属性被大量使用。

请建议我正确有效的方法。

4

4 回答 4

2

根据我从问题中了解到的情况,只有一种类型的 bean,roleManager但它的使用roleManager是基于应用程序流的。

在这种情况下,我建议您像使用任何其他 bean 一样进行注入roleManagerruleEngineAction但仅在必要时使用 bean。

在普通类中不必要地依赖 spring 是一种不好的做法,例如applicationContext在运行时动态获取 bean 的引用。

于 2013-03-22T07:06:25.650 回答
1

无论您是否注入此 bean,它都将由Spring. 为什么不将属性包含在您的课程中UserAction以及是否使用它,可以在您的班级中决定。注入 bean 并没有什么坏处,因为无论如何您都会在某些情况下使用它。

如果场景是这样的,则不会创建对象,如果您不注入/使用,那么考虑这种情况是有意义的,但是由于Spring无论如何都会创建对象,所以真的不应该成为问题只需注入它。

于 2013-03-22T06:54:06.910 回答
0

那么你需要在你的类中添加带有 getter 和 setter 的新属性,com.xxxxx.yyyy.UserAction例如roleManager

class UserAction {
   // your previous properties userManager, userDto, etc.

   private RoleManager roleManager; // assuming interface/class as RoleManager for roleManager

   // getter and setter for roleManager

   // your other action methods which will use roleManager

}
于 2013-03-22T06:53:44.373 回答
0

如果你也注入没有问题。只要你访问那个类,它就会创建那个类的对象。

于 2013-03-22T06:55:06.887 回答