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内で、もう1つのプロパティを使用したいのですが、それは次のようなアプリケーションフローによって異なります。

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

したがって、このプロパティをBean定義自体に含める必要があります。または、このプロパティをあまり使用したくないため、コードで動的に行うことができます。

正しく効率的なアプローチを提案してください。

4

4 に答える 4

2

質問から理解したところ、タイプのBeanは1つだけですroleManagerが、の使用法はroleManagerアプリケーションフローに基づいています。

このシナリオでは、他のBeanと同じように注入roleManagerすることをお勧めしますruleEngineActionが、必要な場合にのみBeanを使用してください。

applicationContext実行時に動的にBeanをフェッチするための参照を追加するなど、通常のクラスでSpringに不必要に依存することは悪い習慣です。

于 2013-03-22T07:06:25.650 に答える
1

このBeanを注入するかどうかに関係なく、とにかくによって作成されSpringます。プロパティをあなたの中に含めるだけでUserActionなく、それを使用するかどうかは、クラスで決めることができます。とにかくいくつかのシナリオで使用するため、Beanを注入しても害はありません。

シナリオが次のようになっている場合、オブジェクトは作成されません。注入/使用しない場合は、この状況を考慮することは理にかなっていますがSpring、とにかくオブジェクトを作成するので、実際には問題にはなりません。注入するだけです。

于 2013-03-22T06:54:06.910 に答える
0

次のように、クラスcom.xxxxx.yyyy.UserActionにgetterとsetterを使用して新しいプロパティを追加する必要があります。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 に答える