目录
出现No qualifying bean of type 'com.dao.PersonDao' available错误
SpringBoot整合第三方技术
1、整合Junit
创建一个Dao包下的UserDao
package com.Dao;
public interface UserDao {
void save();
}
创建实现类
package com.Dao.Impl;
import com.Dao.UserDao;
import org.springframework.stereotype.Repository;
//要使能被spring管理,加上注解@Component(spring管理的通用注解)或@Repository(更合适)
@Repository
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("userDao is running...");
}
}
在测试下
package com.springbootjunit04;
import com.Dao.UserDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springbootjunit04ApplicationTests {
//1、注入想要让spring管理的值
@Autowired
private UserDao userDao;
@Test
void contextLoads() {
//2、执行你要测试对象对应的方法
userDao.save();
}
}
运行结果
@Autowired出现找不到注入对象的原因
出现这种错误是因为springboot默认扫描这个启动类所在的包及其子包,所以就无法识别了,只需要将启动类移动到编写的Dao包之上即可重新被识别。
核心:@SpringBootTest
名称:@SpringBootTest
类型:测试类定义上方
作用:设置Junit加载的SpringBoot启动类
@SpringBootTest
class Springbootjunit04ApplicationTests {}
整合Junit步骤:
1、导入测试对应的starter(springboot已经在pom.xml完成)
2、测试类使用SpringBootTest注解(SpringBoot完成了)
3、使用自动装配的形式添加要测试的对象
classes属性
相关属性:设置SpringBoot启动类
我们一开始设置在com包下的Test类,移出去启动后就会报错,原因是一开始在com包,springboot就会去同名上的com包下去找,如果这个test类在引导类的包下及其子包下则不会报错。报错的原因是test类找不到引导类(启动类)
所有只需要使用classes标签
@SpringBootTest(classes = Springbootjunit04Application.class)
如果测试类在SpringBoot启动类的包或子包中,可以省略启动类的设置,也就是省略classes的设定
2、整合MyBatis
创建一个新的