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

Spring Boot中无法通过构造函数注入Repository问题求助

问题解决:构造函数注入后Repository为null的问题

问题原因

你当前的代码里同时存在无参构造函数和带参构造函数,Spring在创建UserJpaResource的Bean实例时,会默认选择无参构造来初始化对象,导致userRepository和postRepository都没有被赋值,调用findAll()时自然抛出空指针异常。

解决方法(无需@Autowired)

直接删除无参构造函数即可。Spring 4.3及以上版本会自动识别类中唯一的构造函数,并自动完成依赖注入,不需要额外加@Autowired注解。

修改后的UserJpaResource.java代码:

@RestController
public class UserJpaResource {
    private UserRepository userRepository;
    private PostRepository postRepository;

    // 只保留带参构造,删除无参构造
    public UserJpaResource(UserRepository userRepository, PostRepository postRepository) {
        this.userRepository = userRepository;
        this.postRepository = postRepository;
    }

    @GetMapping("/jpa/users")
    public List<User> retrieveAllUsers() {
        return userRepository.findAll();
    }
}

补充说明

如果你的Spring版本低于4.3,或者出于某些原因必须保留无参构造,那只能在带参构造上添加@Autowired注解(但这不符合你不想用@Autowired的需求,所以优先推荐上面的方法)。

内容的提问来源于stack exchange,提问作者Quốc Kiệt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:10