当我尝试执行如下操作并且 Spring MVC 中有一个 RequestMapping Controller 类实例化并调用外部类时,我无法在该类中使用依赖项注入(inject),例如如果我尝试使用
@Resource(name = "savedsearchesService")
private SavedSearchesService savedsearchesService;
我收到空指针异常。相反,我必须将 SavedSearchesService savingsearchesService
从我的 Controller 方法传递到另一个外部方法才能使其正常工作。
我想知道是否有人可以指出为什么会这样,因为我很好奇,以及我是否遗漏了如何正确执行此操作的内容。谢谢
@Controller
@RequestMapping("")
public class MainController {
@Resource(name = "savedsearchesService")
private SavedSearchesService savedsearchesService;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getPersons(Model model, HttpServletRequest request)
throws IOException {
HttpSession session = request.getSession();
SomeExternalClass someExternalClass = new SomeExternalClass ();
someExternalClass.Main();
}
}
这是外部类的示例:
public class SomeExternalClass {
@Resource(name = "savedsearchesService")
private SavedSearchesService savedsearchesService;
public void Main () {
savedsearchesService.get();
}
}
最佳答案
问题出在这一行:
SomeExternalClass someExternalClass = new SomeExternalClass();
所有依赖于 springs 依赖注入(inject)的类都必须是 spring 管理的,但每当您使用 new 关键字实例化类时,情况并非如此。
有多种选择。提一些:
将
SomeExternalClass
注入(inject)您的 Controller 。创建一个隐藏实例化逻辑的 spring 管理工厂(例如
applicationContext.getBean()
)
关于java - Spring MVC 依赖注入(inject)在从 RequestMappingController 中调用的对象中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5249953/