2012-01-08 4 views
6

Netbeans에서 Spring MVC Project를 사용하고 WEB-INF가 올바른 폴더가 아니므로 applicationContext.xml 파일을/src/conf로 이동했습니다./src/java/web/controller의 컨트롤러에서 응용 프로그램 컨텍스트에 액세스 할 수 없습니다. 몇 가지 방법을 시도하고 프로젝트를 배포하지 않습니다.컨트롤러에서 applicationContext에 액세스하는 방법

웹 프로젝트의 경로에 대해 자세히 알아 보려면 링크를 원합니다.

나는이 파악하는 데 도움 수 있다고 생각 :

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

및 경로가 무엇입니까? 컨트롤러가 /WEB-INF/applicationContext.xml에서 applicationContext를 찾지 못하기 때문입니다. 감사합니다 – honnix

+0

JSP로 작업을 표시하는 TasksController를 만들려고합니다. applicationContext.xml에 정의 된 bean taskManager가 있는데 컨트롤러가 taskManager를 가져 와서 getTasks()를 사용하여 작업을 가져 오도록하고 싶습니다. – honnix

답변

13

아야. OK, 컨트롤러 내에서 새로운 컨텍스트를 인스턴스화하지 않습니다. 컨텍스트는 이미 Spring에 의해 구성되었으므로 Spring에 요청해야합니다.

컨트롤러가 BeanFactoryAware을 구현 확인하고 봄이 자동으로 setBeanFactory를 호출하여 당신을위한 컨텍스트를 주입합니다

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

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

    // handleRequest as before 
} 
+0

bean taskManager를 dispatcher-servlet.xml의 TaskController에 삽입해야합니까? – honnix

+0

@honnix : 예, 그렇습니다. – skaffman

관련 문제