Java ServiceImpl 方法不断返回 null

标签 java spring service null autowired

我刚开始使用 MVC 和 spring,并且在添加服务文件时遇到了问题。我有 3 个文件:Controller.java、Service.java 和 ServiceImpl.java。我的目标是将现有 Controller 类中的所有当前服务逻辑移至 Service 级别,因此我知道方法中的逻辑不是问题。我面临的问题是我尝试从 Service 调用的所有方法Controller.java 中的 .java 返回 null 并导致空指针错误。

我已经看到了许多 Autowiring 变量为空的解决方案,但我很确定这不是我的问题。

Controller.java

package project.controller;

import project.type.ServiceType;
import project.service.Service;

@Controller
public class Controller {
    @Autowired
    private final Service service;

    @Autowired
    public Controller(final Service service) {
        this.service = service;
    }

@RequestMapping(method = RequestMethod.POST)
    public @ResponseBody Object post() {

        ServiceType var1 = service.serviceMethod(true); ---> always sets var1 to null
        service.serviceMethod2(var1); ---> Throws NPE

        switch (var1) {
            case SUCCESS:
                return "Success";
            case FAILURE:
                return "Failure";
            default:
                return null;
        }
    }
}

Service.java

package project.service;

public interface Service{
    public ServiceType serviceMethod(boolean bool);
    public ServiceType serviceMethod2(ServiceType serviceType);
}

ServiceImpl.java

package project.service.impl;

import project.type.ServiceType;
import project.service.Service;

@Service
public class ServiceImpl implements Service{

    @Override
    public ServiceType serviceMethod(boolean bool){
       if(bool){
          return ServiceType.SUCCESS;
       }
       return ServiceType.FAILURE;
    }

    @Override
    public ServiceType serviceMethod2(ServiceType serviceType){
       *calculate*
    }
}

ServiceType.java

package project.type;

public enum ServiceType {
    SUCCESS,
    FAILURE
}

ServiceConfig.java

package project.config;

import Service;
import ServiceImpl;

@Configuration
public class ServiceConfig {
    @Bean
    public Service Service() {
        return new ServiceImpl();
    }
}

在 IntelliJ 中可以看到我的服务变量 =“service”,因此它似乎是从正确的位置提取的。

我已尽力以通用方式重新创建我的代码。我觉得缺少一些小连接可能会导致此问题,因此任何关于为什么会发生这种情况的想法将不胜感激!

最佳答案

从 serviceMethod() 返回的 ServiceType 对象似乎为 null。因为您可以使用服务@Autowired 调用serviceMethod()。检查您的 serviceMethod() 实现。

关于Java ServiceImpl 方法不断返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59712495/

相关文章:

java - 使用 Java 对 LPT 端口进行编程。真的吗?

java - 删除重复项,同时保持并行列表同步

java - 使用 Spring Security,管理查询响应授权的正确方法是什么?

android - 如果我从 Activity 中的 onCreate startService,finish() Activity 然后再次启动应用程序,会发生什么情况?

android - 从 Android 中的服务中提取

java - byte[] 作为 Rest Web 服务的输入

java - doClick() 是否需要启用组件?

java - 获取数组的最后一个元素

java - 运行 spring boot jar 时找不到或加载主类

spring - 如何将 Mule 表达式传递给 spring 属性