csdnQiPa
2021-05-10 16:07
采纳率: 66.7%
浏览 321
已采纳

Springboot为什么扫描不到dao层

 

环境:Spring+Springboot+Mybatis+jpa

Application
@MapperScan("com.text.mapper")
@ComponentScan(basePackages = {"com.text.service","com.text.serviceInfo","com.text.web","com.text.web","com.text.dao"})
public class ProjectmanagerApplication {
	public static void main(String[] args) {
		SpringApplication.run(ProjectmanagerApplication.class, args);
	}

}

dao

@Component
public abstract class TestUserDao extends BaseDao<TestUser> {
    @Autowired
    public TestUserMapper testUserMapper;

    public List<TestUser> Sel(int id) {
        return testUserMapper.Sel(id);
    }
}
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 笔下天地宽 2021-05-10 17:04
    已采纳

    TestUserDao 这个东东似乎是抽象类吧?不能直接注入的,spring的原理是启动服务器时读取配置文件,取得类名后利用反射机制在spring上下文中生成一个单例的对象,由spring注入属性并维护此对象的状态,抽象类在反射生成对象时就已经失败了,后面的不会进行。  建议注入实现类,当然你要非要注入抽象类的话,也可以,新建一个bean加载器吧,自己加载上去,也阔以的。

         写了这么多,老铁再不采纳,就不够意思了。。。

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • 笔下天地宽 2021-05-10 16:40
    MapperScan配置之后,还要在配置文件中添加 
    mapper-locations: classpath: ***/** 这个配置,扫描mapper文件,老铁加了么?

    另外,注意下,项目包结构,一定要扫描到~~

    觉得回答还行的话,可采纳~

    评论
    解决 无用
    打赏 举报
  • এ某年某月某日এ 2021-05-10 16:57

    首先排查建包是否有问题,持久层和业务层的包都必须是在主程序的包的子包下面,这样才能被注入。确认没有问题之后,再去排查,持久层和业务层里面的注解是否正确,在持久层里面的Dao接口中应当以@Mapper进行注解,在业务层的Servcie类中应当以@Service进行注解

     

    评论
    解决 无用
    打赏 举报
  • 技术砖家--Felix 2021-05-10 17:00

     

     

     

     

    抽象类能注入吗?你搞什么????

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题