2

現在のMavenビルドの「メイン」applicationContext-a.xmlを使用してApplicationContextを作成する必要があります。他の1つは、別のMavenビルドからのクラスを配線し、MavenDependencyに含まれるjarに事前設定されています。

ここにアイデアがあります:

ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {
                "classpath*:applicationContext-*.xml"});

これは、同じプロジェクト内にあるため、クラスパスからapplicationContext-a.xmlをロードする必要があります。これは機能します。

次に、applicationContext-b.xmlをdependency-jarからロードする必要があります。 これは機能しません。

ご了承ください

"classpath*:applicationContext-*.xml"

直接クラスパス内のXMLにのみ一致し、jar内には一致しません。

私が見つけたもの:

ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {
                "classpath*:applicationContext-*.xml", "classpath*:applicationContext-b.xml"});

これは機能しますが、jar内のxmlのファイル名を明示的に伝えることができる場合に限ります:applicationContext-b.xml

統合テストで機能するには、これも必要です。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"**/applicationContext*.xml"})
public class TestClass { ... }

最良のアイデアはカスタムローダーかもしれませんか?このパターンを機能させる方法が必要です...

少し前に解決策がありましたが、それは逆に機能します。それは、jarからapplicationContext.xmlを取得するだけです。クラスパス内に別のファイルがある場合は、このファイルでのみ一致します。

4

1 に答える 1

6

ルートフォルダのclasspath*:下のファイルには制限があると思います。spring/application-a.xmlおよびのようなフォルダの下にファイルを移動してみてくださいspring/application-b.xml。次に、パスを持つことができますclasspath*:/spring/application-*.xml

于 2012-05-10T06:46:13.097 に答える