3

Servletサービスからデータを取得し、データをサーブレット応答に書き戻すクラスがあります。このserviceクラスは既に spring xml で宣言されています ( dispatcher-servlet.xml)。だから私はから取得しservice class beanたいdispatcher-servlet.xml

以下のコードを試しました

            ApplicationContext context = new FileSystemXmlApplicationContext("classpath:../WebContent/WEB-INF/dispatcher-servlet.xml");
        ServiceImpl serviceImpl = (ServiceImpl) context.getBean("service");

以下のコード

            ServletContextResource res = new ServletContextResource(getServletContext(),"/WEB-INF/dispatcher-servlet.xml");
        ApplicationContext context = new FileSystemXmlApplicationContext("file:"+res.getURL()+"dispatcher-servlet.xml");
        ServiceImpl serviceImpl = (ServiceImpl) context.getBean("service");

しかし、これらが投げているものFileNotFoundException

dispatcher-servlet.xmltosrcフォルダを移動すると、正常に動作します。しかし、dispatcher-servlet.xml は長い間 WEB-INF に存在し、他の多くのクラスが使用しているため、移動できません。dispatcher-servlet.xmlWeb.xml で適切に宣言されており、適切に読み込まれて動作します。

唯一の問題は、サーブレット クラスの Java コードからロードできないことです。

dispatcher-xml の場所は /WebContent/WEB-INF/dispatcher-servlet.xml です。

ポインタや回避策は大歓迎です。ありがとう。

4

2 に答える 2

2

WEB-INFクラスパスに追加されます

以下のコードを試すことができます

ApplicationContext context = new FileSystemXmlApplicationContext
              ("classpath:/../dispatcher-servlet.xml");

Sotirios Delimanolisのアドバイスに従って、クラスパスとは何か、および Web アプリのどの部分がクラスパスに追加されるかについて読むことを検討してください。

于 2013-11-14T19:35:33.553 に答える