java - Spring MVC 依赖注入(inject)在从 RequestMappingController 中调用的对象中不起作用

标签 java spring-mvc dependency-injection controller

当我尝试执行如下操作并且 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/

相关文章:

java - equal() 和 equalsIgnoreCase() 对相等的字符串返回 false

java - 如何使用具体参数进行子类化

java - 如何用OpenCV 3.0编写视频

jsp - 使用 Spring Security 将 https 卸载到负载均衡器

java - 如何使用 Spring Actuator 在浏览器屏幕中显示日志文件的内容?

c# - Ninject 的 .NET MVC3 服务定位器/依赖解析器问题

android - 无法从非@Nullable @Provides 方法错误返回 null

java - grails urlMappings dsl

spring-mvc - Spring 如何将 OncePerRequestFilter 与它的 init-param 值连接起来?

dependency-injection - 温莎城堡传递构造函数参数