一、SpringBoot整合junit
回顾Spring整合junit,使用@Runwith注解指定运行器,使用@ContextConfiguration注解来指定配置类或者配置文件,而SpringBoot整合junit特别简单,分为以下三部完成
● 在测试类上添加SpringBootTest注解
● 使用@Autowired注入到测试的资源
● 定义测试方式进行测试
环境准备
创建一个SpringBoot工程
创建BookService接口,内容如下:
public interface BookService { public void save(); }
创建一个BookServiceImpl类,使其实现BookService接口,内如如下
@Service public class BookServiceImpl implements BookService { @Override public void save() { System.out.println("book service is running ..."); } }
编写测试类
将BookService注入到测试类中 @SpringBootTest class Springboot07TestApplicationTests { @Autowired private BookService bookService; @Test public void save() { bookService.save(); } }
注意:这里的引导类所在包必须是测试类所在包及其子包
例如:
● 引导类所在包是
com.itheima
● 测试类所在包是
com.itheima
如果不满足这个要求的话,就需要使用@SpringBootTest注解时,使用classes属性指定引导类的字节码对象,如@SpringBootTest(classes = Springboot07TestApplication.class)
二、SpringBoot整合Mybatis
回顾Spring整合Mybatis需要定义很多配置类
SpringConfig配置类(导入JdbcConfig配置类,导入MybatisConfig)
JdbcConfig配置类(定义数据源(加载properties配置项:duiver,url,username,password))
MybatisConfig配置类(定义sqlsessionFactoryBean、定义映射配置)
SpringBoot整合mybatis
创建模块
创建新模块,选择Spring Initializr,并配置模块相关基础信息
选择模块需要的技术集(myBatis、MySQL)
定义实体类
在damain包中定义实体类Book,内容如下:
public class Book { private Integer id; private String name; private String type; private String description; //setter and getter //toString }
定义dao接口
在dao包下定义BookDao接口,使用@Mapper注解将BookDao接口注入到Spring容器中,内容如下
@Mapper public interface BookDao { @Select("select * from tbl_book where id = #{id}") public Book getById(Integer id); }
定义测试类
在定义包com.itheima中编写测试类,内容如下:
@SpringBootTest class Springboot08MybatisApplicationTests { @Autowired private BookDao bookDao; @Test void testGetById() { Book book = bookDao.getById(1); System.out.println(book); } }
编写配置
在SpringBoot配置文件中进行配置,在application.yml配置文件中配置如下内容:
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/ssm_db username: root password: root
最后进行测试
注意:
SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区
jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC,或在MySQL数据库端配置时区解决此问题
三、使用Druid数据源
我们并没有指定数据源,SpringBoot有默认的数据源,我们也可以指定使用Druid数据源,按照如下步骤实现
导入Druid依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.16</version> </dependency>
在application.yml配置文件配置
可以通过spring.datasource.type来配合着使用什么数据源,配置内容可以改进为:
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC username: root password: root type: com.alibaba.druid.pool.DruidDataSource