Правильный путь к applicationContext.xml с использованием ClassPathXmlApplicationContext - PullRequest
8 голосов
/ 26 января 2011

У меня есть работающее веб-приложение с applicationContext.xml в WEB-INF / config / applicationContext.xml. Теперь мне нужно реализовать какой-то инструмент тестирования в качестве автономного приложения, которое может использовать тот же applicationContext.xml, но у него есть проблема с путем к конфигурации для класса ClassPathXmlApplicationContext.

Я знаю, что когда я копирую applicationContext.xml в пакет по умолчанию (где находится .java), я могу использовать ClassPathXmlApplicationContext ("applicationContext.xml"), но необходимо ли это?

import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class AdminTool {

    private Logger log = Logger.getLogger(getClass());

    /** all below doesn't work - FileNotFoundException) **/
    private static final ApplicationContext ac = new ClassPathXmlApplicationContext("/WEB-INF/config/applicationContext.xml");
    private static final ApplicationContext ac = new ClassPathXmlApplicationContext("config/applicationContext.xml");
    private static final ApplicationContext ac = new ClassPathXmlApplicationContext("../config/applicationContext.xml");

    public static void main(String[] args) {
        new AdminTool();
    }

    public AdminTool() {
        log.debug(ac);
    }

}

Ответы [ 5 ]

13 голосов
/ 26 января 2011

В локальном тестовом сценарии вы не находитесь внутри Jar, поэтому вам не нужен доступ на основе Classpath. Вместо этого используйте FileSystemXmlApplicationContext.

Возможно что-то вроде этого:

private static final ApplicationContext ac =
    new FileSystemXmlApplicationContext(
        "src/WEB-INF/config/applicationContext.xml"
    );

(пути относительны из каталога выполнения)

3 голосов
/ 26 января 2011

По этой причине я предпочитаю помещать все файлы конфигурации в папку classes . Фактически, используя Maven, вы можете поместить все эти файлы в src / main / resources . Затем в ваших тестовых файлах вы можете получить доступ как classpath: applicationContext.xml '.

1 голос
/ 26 января 2011
private static final ApplicationContext ac =
    new FileSystemXmlApplicationContext(
        "/WEB-INF/config/applicationContext.xml"
    );
0 голосов
/ 05 февраля 2018

перейдите в свойство> Путь сборки Java> Источник вашего проекта, проверьте путь к классу и добавьте каталог перед WEB-INF в пути к классам.определенно это работа

0 голосов
/ 01 октября 2015
private static final ApplicationContext ac =
new FileSystemXmlApplicationContext(
    "/WEB-INF/config/applicationContext.xml"
);
...