我对使用MVC和spring并不陌生,在添加服务文件时遇到了麻烦。我有3个文件:Controller.java,Service.java和ServiceImpl.java。我的目标是将现有Controller类中的所有当前服务逻辑移到Service级别,因此我知道方法中的逻辑不是问题。我面临的问题是我尝试从Service调用的所有方法Controller.java中的.java返回null并导致空指针错误。
我已经看到很多自动连接变量为null的解决方案,但是我很确定这不是我的问题。
Controller.java
@Controller
public class Controller {
@Autowired
private final Service service;
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Object post() {
ServiceType var1 = service.serviceMethod(); ---> always sets var1 to null
service.serviceMethod2(var1); ---> Throws NPE
}
}
Service.java
public interface Service{
ServiceType serviceMethod();
ServiceType serviceMethod2(ServiceType serviceType);
}
ServiceImpl.java
@Service
public class ServiceImpl implements Service{
ServiceType serviceMethod(){
*calculate*
}
ServiceType serviceMethod2(ServiceType serviceType){
*calculate*
}
}
在IntelliJ中可以看到我的服务变量=“ service”,因此它似乎是从正确的位置提取的。
我已尽力以通用方式重新创建代码。我觉得可能缺少一些可能导致此问题的小连接,因此,对此原因的任何想法将不胜感激!
@@服务的Bean定义丢失https://docs.spring.io/spring-javaconfig/docs/1.0.0.m3/reference/html/creating-bean-definitions.html
或在@Configuration中使用@ComponentScanninghttps://www.baeldung.com/spring-component-scanning