初次尝试搭建一个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?
哪位大侠帮帮我?