我在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);
}
}
答案 0 :(得分:13)
在本地测试场景中,您不在Jar中,因此您不需要基于Classpath的访问。请改用FileSystemXmlApplicationContext
。
可能是这样的:
private static final ApplicationContext ac =
new FileSystemXmlApplicationContext(
"src/WEB-INF/config/applicationContext.xml"
);
(路径与执行目录相对)
答案 1 :(得分:3)
这就是为什么我更喜欢将所有配置文件放在 classes 文件夹中的原因。事实上,使用Maven,您可以将所有这些文件放在 src / main / resources 中。然后,在测试文件中,您可以访问“ classpath:applicationContext.xml ”。
答案 2 :(得分:1)
private static final ApplicationContext ac =
new FileSystemXmlApplicationContext(
"/WEB-INF/config/applicationContext.xml"
);
答案 3 :(得分:0)
private static final ApplicationContext ac =
new FileSystemXmlApplicationContext(
"/WEB-INF/config/applicationContext.xml"
);
答案 4 :(得分:-1)
请转到属性> Java Build Path>项目源检查类路径并在类路径中添加WEB-INF之前的目录。绝对是它的工作