使用ClassPathXmlApplicationContext的applicationContext.xml的正确路径

我在WEB-INF / config / applicationContext.xml中使用applicationContext.xml工作web应用程序。 现在我需要将一些测试工具实现为独立应用程序,它可以使用相同的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); } } 

在本地测试场景中,您不在Jar中,因此您不需要基于Classpath的访问。 请改用FileSystemXmlApplicationContext

可能是这样的:

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

(路径与执行目录相对)

这就是为什么我更喜欢将所有配置文件放在classes文件夹中的原因。 事实上,使用Maven,您可以将所有这些文件放在src / main / resources中 。 然后,在测试文件中,您可以访问“ classpath:applicationContext.xml ”。

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

请转到属性> Java构建路径>项目源检查类路径并在类路径中添加WEB-INF之前的目录。 绝对是它的工作