gpt4 book ai didi

java - 如何从实例初始化 block 调用注入(inject)的 bean 方法

转载 作者:行者123 更新时间:2023-11-30 06:56:56 25 4
gpt4 key购买 nike

我正在使用 Spring 和 SpringMvc,我想在某个 Controller 中调用服务的方法,并且它们都由 Spring 管理。当我尝试这样做时,我得到了 NullPointerException,但我发现在我调用此方法之前真正调用了服务的构造函数。我想可能是Spring中添加了这个Service,但是这个controller里面的属性还没有设置。

如何从 SpringContext 获取它?

我的代码是这样的:

 @Controller 
@RequestMapping("/test")
public class SomeController {

@Resource
private SomeService someService;

{
someService.serviceMethod();
//And something more
}

@RequestMapping("/someMethod")
private void controllerMethod(){

}
}

最佳答案

您正在尝试从初始化程序 block 调用 spring 注入(inject)的服务。你用@Resource注解的资源还没有被spring注入(inject)到controller中!这就是你得到 NullPointerException 的原因创建一个用@PostConstruct 注释的单独函数。

@Controller 
@RequestMapping("/test")
public class SomeController {

@Resource
private SomeService someService;

@PostConstruct
public void postConstruct(){
someService.serviceMethod();
}
}

“postConstruct”方法将在创建 bean(即 Controller )并将所有依赖项(包括 SomeService)注入(inject) bean 后调用。当然,它满足你只调用一次的要求。

关于java - 如何从实例初始化 block 调用注入(inject)的 bean 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33951870/

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