Java 如何在Spring controller中访问applicationContext.xml?
我的控制器类位于Java 如何在Spring controller中访问applicationContext.xml?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我的控制器类位于com.tps.sphbIntegration.controllers包中 我的applicationContext.xml文件位于WEB-INF/spring/applicationContext.xml 在控制器类中: @Controller @RequestMapping("jsp") public class SpringController { @RequestMapping(value="register.html" , method = RequestMethod
com.tps.sphbIntegration.controllers
包中
我的applicationContext.xml文件位于WEB-INF/spring/applicationContext.xml
在控制器类中:
@Controller
@RequestMapping("jsp")
public class SpringController {
@RequestMapping(value="register.html" , method = RequestMethod.POST)
public String enterSucess(@Valid Login login , BindingResult result , Map model,HttpSession session){
if(result.hasErrors()){
System.out.println("Error happened...");
return "register";
}else{
System.out.println("I am an controller for get method of jsp/success.html ");
login = (Login) model.get("login");
session.setAttribute("empId", login.getEmpId()) ;
session.setAttribute("empName", login.getEmpName()) ;
session.setAttribute("empPassword", login.getEmpPassword()) ;
//session.setAttribute("empGender", login.getGender()) ;
//session.setAttribute("empType", login.getEmpType()) ;
ApplicationContext factory = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
EmployeeDao dao=(EmployeeDao)factory.getBean("d");
dao.saveEmployee(login);
return "registerCheck";
}
}
}
执行时,我得到的异常为
java.io.FileNotFoundException: class path resource [spring/applicationContext.xml] cannot be opened because it does not exist
请帮助我在控制器中设置
applicationContext.xml
的路径,或者给出一些示例,说明如何在控制器中访问applicationContext.xml
。您必须告诉servlet上下文加载程序侦听器在web.xml中找到Spring应用程序上下文xml文件的位置。你的错误向我表明你没有那样做
如果web.xml中确实有,请检查路径是否正确
如果路径正确,请打开WAR文件,查看XML是否丢失。可能您有部署和打包问题
web应用不应调用此:
ApplicationContext factory = new ClassPathXmlApplicationContext("spring/applicationContext.xml");
如果WEB-INF/classes
目录中有spring/applicationContext.xml
,这将起作用,但首选习惯用法是使用ContextLoaderListener
:
您应该在启动时加载整个应用程序的应用程序上下文,而不是一个控制器,当然也不是每次客户端调用此URL时。启动时加载一次
BeanFactoryAware
,这是一个接口,它将通过该接口访问已经存在的应用程序上下文实例。您不能自己创建应用程序上下文不,不,你可以这样做! 正如我将看到的,在您的类中有一个注释(@Controller),这意味着您的类已经由spring管理,如果您在方法中创建另一个应用程序,则内存中有两个ApplicationContext实例。 让您的类实现ApplicationContextAware的接口并重写该方法
设置application,并添加一个私有成员ApplicationContext,然后在该方法中赋值我认为这是获得对ApplicationContext的访问权限的推荐方法:
@Autowired
private ApplicationContext applicationContext;
不需要这样使用“*Aware”类。谢谢您的回复。。。我是否正确访问了applicationContext.xml文件?但是我如何指示服务器获取applicationContext.xml呢?关于使用Spring构建Web应用程序的任何教程都将介绍这些内容。它涉及
web.xml
文件。这也不是首选的习惯用法。我认为您也不想这样做。应用程序上下文应该在整个应用程序启动时加载,而不仅仅是一个类。