16

そんなこと知ってる:

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

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

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

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

  3. XmlWebApplicationContext

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

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

ありがとう :)

4

3 に答える 3

29
  • ClassPathXmlApplicationContextクラスパスからファイルを読み取ります。これらはclasses、Web アプリケーションのフォルダーまたはフォルダー内にある必要がありjarますlib

  • FileSystemXmlApplicationContextなど、すべてのファイル システムにアクセスできますc:/config/applicationContext.xml

  • XmlWebApplicationContextもちろん、Web アプリケーションに含まれるファイルにアクセスできますが、これは最も重要なことではありません。WebApplicationContextを実装します。これは、 ServletContextAware Beanを検出し、カスタム スコープ (リクエスト、セッションなど) を登録することを意味します。

于 2012-05-02T11:11:58.620 に答える
0

上記の意見には何か問題がある可能性があると思いFileSystemXmlApplicationContext ます。ファイルシステム全体にアクセスできません。スキャンできるのはプロジェクトフォルダー全体だけです。私の結論を証明するために、最初に使用ClasspathXmlApplicationContextしてすべてが正常である例を作成します。 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)

そのため、FileSystemXmlApplicationContext は現在のプロジェクトのすべてのフォルダーのみを検出できます。たとえばconfig、プロジェクトのルート ディレクトリの下に名前を付けたディレクトリを作成し、メイン クラスのコードを次のように変更できます。

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

そして、すべてが再びうまくいくでしょう。ですから、sinuhepop のように言ったのであれば、何かを変更する必要があると思います。

于 2016-11-10T10:12:04.383 に答える