Правильный путь к applicationContext.xml с использованием ClassPaспасибоmlApplicationContext
У меня есть веб-приложение с applicationContext.xml в WEB-INF/config/applicationContext.xml. Теперь мне нужно реализовать некоторый инструмент тестирования как автономное приложение, которое может использовать тот же applicationContext.xml, но имеет проблему с путём к config для класса ClassPaспасибоmlApplicationContext.
Я знаю, что когда я копирую applicationContext.xml в пакет по умолчанию (где находится .java), я могу использовать ClassPaспасибоmlApplicationContext ( "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);
}
}
Ответы
Ответ 1
В локальном тестовом сценарии вы не находитесь внутри Jar, поэтому вам не нужен доступ на основе Classpath. Вместо этого используйте FileSystemXmlApplicationContext
.
Возможно, что-то вроде этого:
private static final ApplicationContext ac =
new FileSystemXmlApplicationContext(
"src/WEB-INF/config/applicationContext.xml"
);
(пути относятся к каталогу выполнения)
Ответ 2
Вот почему я предпочитаю размещать все файлы конфигурации в папке классов. Фактически, используя Maven, вы можете поместить все эти файлы в src/main/resources. Затем в тестовых файлах вы можете получить доступ как "classpath: applicationContext.xml".
Ответ 3
private static final ApplicationContext ac =
new FileSystemXmlApplicationContext(
"/WEB-INF/config/applicationContext.xml"
);
Ответ 4
private static final ApplicationContext ac =
new FileSystemXmlApplicationContext(
"/WEB-INF/config/applicationContext.xml"
);
Ответ 5
перейдите в свойство > Java Build Path > Источник вашего проекта проверяет путь к классам и добавляет каталог до WEB-INF в пути к классам. определенно это работает