2012-05-02 19 views
8

私がことを知っている:クラスパス、ファイルシステムの違いは何ですか?

  1. ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");

    クラスパスリソースとしてコンテキストの定義を処理するクラスパスにあるXMLファイルからロードするコンテキストの定義を、。

  2. ApplicationContext context = new FileSystemXmlApplicationContext("bean.xml");

    ファイルシステム内のXMLファイルからコンテキスト定義をロードします。

  3. XmlWebApplicationContext

    Webアプリケーション内に含まれるXMLファイルからコンテキスト定義をロードします。

しかし、正確にはどういう意味ですか?

感謝:)

+4

に設定されている限り、完全なパスを設定する必要がありDONOT。内部的には、デフォルトでXmlWebApplicationContentのような異なる動作があり、WEB-INFフォルダ内のapplicationContext.xmlが検索されます。また、異なる場所を設定するためのinitパラメータも必要です。基本的には、XMLファイルを読み込むために異なるアプローチを使用します。 – Seshagiri

答えて

16
  • ClassPathXmlApplicationContextは、あなたのクラスパスからファイルを読み込みます。ウェブアプリケーションのclassesフォルダにあるか、libフォルダのjarにある必要があります。

  • FileSystemXmlApplicationContextはすべてのファイルシステムにアクセスできます(例:c:/config/applicationContext.xml)。

  • XmlWebApplicationContextあなたのウェブアプリケーションに含まれるファイルには必ずアクセスできますが、これは最も重要なことではありません。これはWebApplicationContextを実装しています。つまり、ServletContextAware beanを検出し、カスタムスコープ(リクエスト、セッションなど)を登録します。

+0

それは私が正確にしたいです。ありがとう:) –

0

は、私は上記の意見は、FileSystemXmlApplicationContextはあなたの全体のファイルシステムにアクセスすることはできません間違った何かを持っているかもしれないと思う、私は例を作る私の結論を証明するためfolder.Inプロジェクト全体はまず、それだけでスキャンできるものですClasspathXmlApplicationContextを使用して、すべてが正常で、2回目はbeans.xmlファイルをデスクトップフォルダに移動するため、プロジェクトのヒイラキーにbeans.xmlファイルがなく、ClassPathXmlApplicationContextをFileSytemXmlApplicationContextに変更して何か問題が起きます。

INFO: Loading XML bean definitions from file [/Users/crabime/Development/IdeaProjects/springInterview/Users/crabime/Desktop/beans.xml] 
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [/Users/crabime/Development/IdeaProjects/springInterview/Users/crabime/Desktop/beans.xml]; nested exception is java.io.FileNotFoundException: Users/crabime/Desktop/beans.xml (No such file or directory) 

So F ileSystemXmlApplicationContextは現在のプロジェクトのすべてのフォルダのみを検出できます。たとえば、あなたは、プロジェクトのルートディレクトリの下にconfigという名前のディレクトリを作り、あなたは以下のように自分のメインクラスのコードを変更することができます。

ApplicationContext atx = new FileSystemXmlApplicationContext("/config/beans.xml"); 

、すべてがOKを再度ます。だから、もしsinuhepopのようなものがあれば、何かを変える必要があると私は思う。

0

FileSystemXmlApplicationContext-あなたは、XML豆 ClassPathXmlApplicationContextの完全なフル・パスを提供する必要がある - この場合は、あなたがクラスパスがすでに彼らは使い方が異なる方法を説明し

関連する問題