7

ここでは、特定のクラスパスからクラスを除外したいだけです。

com.abc.projectA.service.orderService.sectionA.orderService.class

ただし、同じ名前でクラスパスが異なる別のクラスがあります

com.abc.projectA.service.orderService.sectionB.orderService.class

クラス名によるファイラーだけが機能しないようにします。

しかし、私は次の方法を試しました:

<context:component-scan base-package="com.abc">
    <!--other filters-->
    <!--.......-->
    <context:exclude-filter expression="projectA\.service\.orderService\.sectionA\.orderService" type="regex" />
</context:component-scan>

うまくいきません。それで<context:exclude-filter>、パッケージレベルでのみ有効で、特定のクラスでは有効ではないのでしょうか? もしそうなら、Bean インジェクションからクラスを除外して、クラスを選択して選択し、同じクラス名で接続できるようにする方法は?

前もって感謝します。

4

3 に答える 3

15

いいえ、除外は機能するはずです。あなたが抱えている問題は、おそらく、正規表現のパスが真ではないベースパッケージで事前に保留されると想定していることです..完全なパッケージを指定するだけです

<context:component-scan base-package="com.abc">
    <!--other filters-->
    <!--.......-->
    <context:exclude-filter expression="com\.abc\.projectA\.service\.orderService\.sectionA\.orderService" type="regex" />
</context:component-scan>
于 2012-10-23T16:03:27.563 に答える
0

Bean を設定するときは、重複した名前を持つクラスが問題にならないように、クラスの完全なパッケージの場所を含める必要があります。例えば:

<bean id="orderServiceA" class="com.foo.bar.a.OrderService">

<bean id="orderServiceB" class="com.foo.barr.b.OrderService">

これで、両方を使用でき、問題が発生することはありません。何かが足りないのかもしれませんが、クラスが別のパッケージの別のクラスと同じ名前であるため、クラスを削除する必要がある理由がわかりません。つまり、Java SDK には List と呼ばれる複数のクラスがあり、問題が発生することはありません。

于 2012-10-23T15:58:29.150 に答える
0

Java Spec: セクション 7.7で説明されている一意のパッケージ名の規則を破ろうとしているようです。

または、同じクラスの異なるバージョンをロードしようとしていますか? クラスローダーが曖昧さを解消できない場合があります。

于 2012-10-23T16:03:02.800 に答える