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);
    }
}

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

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

MapperScan配置之后,还要在配置文件中添加 
mapper-locations: classpath: ***/** 这个配置,扫描mapper文件,老铁加了么?

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

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

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

 

 

 

 

 

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