gpt4 book ai didi

spring-mvc - 如何从 Controller 访问 applicationContext

转载 作者:行者123 更新时间:2023-12-03 12:13:09 26 4
gpt4 key购买 nike

我正在使用来自 Netbeans 的 Spring MVC 项目,并且我已将 applicationContext.xml 文件移至/src/conf,因为我已阅读 WEB-INF 不是正确的文件夹。我无法从/src/java/web/controller 中的 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);
}

再见!

最佳答案

哎哟。好的,您不会从 Controller 中实例化新的上下文。上下文已经由 Spring 配置,你只需要向 Spring 请求它。

让你的 Controller 实现 BeanFactoryAware , 然后 Spring 将通过自动调用 setBeanFactory 为您注入(inject)上下文。 :

public class TasksController implements Controller, BeanFactoryAware {
private TaskManager taskManager;

public void setBeanFactory(BeanFactory context) {
taskManager = (TaskManager)context.getBean("taskManager");
}

// handleRequest as before
}

关于spring-mvc - 如何从 Controller 访问 applicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8780100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com