fykhlp 2019-03-29 17:09 采纳率: 0%
浏览 3629

springboot JPA的DAO报错NullPointerException

初次尝试搭建一个springboot框架,目前进行到JPA操作数据库这一步,但是继承了JpaRepository的UserDAO接口总是报空指针错误。
这是UserDAO:

@Repository
public interface UserDAO extends JpaRepository<User,Long> {
    }

这是测试类:

@Service
public class Tes {

    @Autowired
    public UserDAO user;

    public void t()
    {
        User u = new User();
        u.setAccount("ff");
        u.setName("asufhua");
        u.setPassword("123456");
        u.setQx(1);
        user.save(u);
    }
}

这是Controller,在跳转首页之前,会调用Tes类往数据库里插一条记录:

@Controller
public class HelloController {
    @RequestMapping("/")
    public String index() {
        new Tes().t();
        return "index";
    }
}

现在我每次进入首页,就会提示user.save处的空指针错误,好像这个DAO没有注入成功一样。
到现在折腾一下午了,我只能初步认定**这个DAO没有注入成功**,所以会NULL。
之前我找到的一个解决办法:把DAO和测试类放在同一个目录下就可以成功,可为什么分开放就不行?
我现在的目录结构是启动类在顶层,然后下面有dao/domain/web/service等多个子包。像这样分开放,会提示“expected at least 1 bean which qualifies as autowire candidate.”
于是我尝试在启动类加上路径扫描@MapperScan("xx.xx.dao"),就不报找不到bean的错,可以运行起来。
但是跑起来后,涉及到dao的操作又会报空指针错误。
我感觉spring怎么这么乱呢?启动类为什么不会扫描下面的子包?为什么注入后又是NULL?
哪位大侠帮帮我?

  • 写回答

2条回答

  • lzq1357 2020-03-27 17:18
    关注

    刚遇到类似的问题,在Controller里面创建Service实例的时候,用new xxxService()会导致Service里的xxxRepository注入失败。

    在Controller里用@Aotowired产生Service实例,就好了,原因不清楚。

        @Autowired
        AccountService accountService;
    
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器