我正在使用Netbeans的Spring MVC项目,我已将applicationContext.xml文件移动到/ src / conf,因为我读过WEB-INF不是正确的文件夹。我无法从/ src / java / web / controller中的控制器访问应用程序上下文。我尝试了几种方法,但没有部署项目。
我想要一个链接,以了解有关网络项目中的路径的更多信息,请求。
我认为这可以帮助我们弄清楚:
public class TasksController implements Controller {
private TaskManager taskManager;
protected final Log logger = LogFactory.getLog(getClass());
public TaskController() {
ApplicationContext context = new FileSystemXmlApplicationContext("/WEB-INF/applicationContext.xml");
taskManager = (TaskManager)context.getBean("taskManager");
}
@Override
public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
logger.info("Returning view from TaskController");
Map<String,Object> tasks = new HashMap<String,Object>();
// Get tasks from model
return new ModelAndView("tasks","tasks",tasks);
}
再见!
答案 0 :(得分:13)
哎哟。好的,您不要在控制器中实例化新的上下文。 Spring已经配置了上下文,你只需要问Spring吧。
让你的控制器实现BeanFactoryAware
,然后Spring将通过自动调用setBeanFactory
为你注入上下文:
public class TasksController implements Controller, BeanFactoryAware {
private TaskManager taskManager;
public void setBeanFactory(BeanFactory context) {
taskManager = (TaskManager)context.getBean("taskManager");
}
// handleRequest as before
}