You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot调用EmployeeService时出现NullPointerException问题求助

解决SpringBoot中EmployeeService注入导致的NullPointerException问题

报错信息

java.lang.NullPointerException: Cannot invoke "com.example.demo.implementation.EmployeeServiceImpl.listEmployees(int)" because "this.employeeService" is null

问题根源

控制器EmployeeController里的employeeService字段未被Spring正确注入,核心原因有两点:

  1. 字段未加final修饰,而你使用的@RequiredArgsConstructor注解仅会为final修饰的字段生成构造方法,无final修饰的字段无法被自动注入。
  2. 依赖注入应面向接口而非具体实现类,这既符合依赖倒置原则,也能避免不必要的代码耦合。

修复方案

1. 修正控制器的依赖声明

将依赖类型改为接口EmployeeService,并添加final修饰符:

@RestController
@RequestMapping("/employee")
@RequiredArgsConstructor
public class EmployeeController {
    // 改为接口类型 + final修饰
    private final EmployeeService employeeService;

    // 其余方法保持不变...
}

2. 规范Service接口的注解(可选但推荐)

你的EmployeeService接口上标注了@Service,该注解仅需添加在实现类上,接口无需此注解,移除即可:

import com.example.demo.model.Employee;
import java.util.Collection;

// 去掉@Service注解
public interface EmployeeService {
    Employee createEmployee(Employee employee);
    Collection<Employee> listEmployees(int limit);
    Employee getEmployee(String employeeId);
    Employee updateEmployee(Employee employee);
    Boolean deleteEmployee(String employeeId);
}

验证修复

完成以上修改后重启SpringBoot应用,Spring会自动将EmployeeServiceImpl实例注入到控制器的employeeService字段中,NullPointerException问题即可解决。

内容的提问来源于stack exchange,提问作者Erfan Bashar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 11:10:19