myślę powyżej opinia może mieć coś złego, FileSystemXmlApplicationContext
nie może uzyskać dostęp do całego systemu plików, co może skanować tylko jest cały projekt folder.In celu udowodnienia mój wniosek i złożyć przykład, pierwszy używając ClasspathXmlApplicationContext
i wszystko jest w porządku, po raz drugi przenoszę plik beans.xml do folderu na pulpicie, więc nie ma pliku beans.xml w projekcie hirachy, i zmień ClassPathXmlApplicationContext na FileSytemXmlApplicationContext
, a coś pójdzie nie tak, śledzenie błędu poniżej:
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)
Tak F ileSystemXmlApplicationContext może wykryć tylko bieżący projekt cały folder. Na przykład zrobić katalog, który nazwany config
w katalogu głównym projektu, można zmienić swój główny kod klasy jak poniżej:
ApplicationContext atx = new FileSystemXmlApplicationContext("/config/beans.xml");
i wszystko będzie OK ponownie. Więc jeśli wszyscy jak sinuhepop powiedzieli, myślę, że powinno być coś, co trzeba zmienić.
Już opisano, w jaki sposób różnią się w eksploatacji.Wewnętrznie mają różne zachowania, takie jak XmlWebApplicationContent domyślnie szukają pliku applicationContext.xml w folderze WEB-INF. A także zajmuje parametr init do konfiguracji innej lokalizacji. Zasadniczo będą używać różnych metod ładowania plików XML. – Seshagiri