Spring Boot依赖注入疑似失效:根路径接口返回错误页面
问题排查与解决
首先排除依赖注入的可能性:如果CustomerService注入失败,Spring应用启动阶段就会抛出NoSuchBeanDefinitionException,根本无法正常启动;而且你的/hi接口能正常响应,说明CustomerController已经被Spring正确加载,依赖注入没有问题。
真正的问题大概率出在**Customer类的序列化环节**:当接口返回Customer对象时,Spring需要将其序列化为JSON格式返回给客户端,但如果Customer类不满足序列化要求,会触发内部异常,最终导致请求失败,跳转到默认的/error fallback页面。
你需要检查Customer类是否满足以下条件:
- 提供无参数构造方法(Jackson等序列化框架默认要求)
- 所有字段都有对应的getter方法(用于读取字段值生成JSON)
- 或者直接使用Lombok的
@Data注解(自动生成无参构造、getter、setter、toString等方法,简化代码)
正确的Customer类示例(手动实现):
public class Customer { private String name; private int age; private String day; // 必须的无参构造 public Customer() {} // 带参构造 public Customer(String name, int age, String day) { this.name = name; this.age = age; this.day = day; } // 所有字段的getter方法 public String getName() { return name; } public int getAge() { return age; } public String getDay() { return day; } }
用Lombok简化的版本:
import lombok.Data; @Data public class Customer { private String name; private int age; private String day; public Customer(String name, int age, String day) { this.name = name; this.age = age; this.day = day; } }
你也可以临时修改根路径接口做验证:
@GetMapping("/") String getCustomerInfo(){ Customer customer = customerService.getCustomer(); return "姓名:" + customer.getName() + ",年龄:" + customer.getAge(); }
如果修改后接口能正常返回字符串,就可以完全确认是Customer类的序列化问题。
内容的提问来源于stack exchange,提问作者Anas Hafidi
相关产品推荐
相关产品推荐

