Как получить доступ к applicationContext из контроллера - PullRequest
6 голосов
/ 08 января 2012

Я использую проект Spring MVC из Netbeans и переместил файл 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);
}

Bye!

1 Ответ

13 голосов
/ 09 января 2012

Уч.ОК, вы не создаете новые контексты из вашего контроллера.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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...