整合JUnit测试
代码测试是开发工作中一个非常重要的环节,Spring Boot中仍然可以使用JUnit进行代码测试。
具体代码如图所示:
注意:以上三个注解要选用低版本
读取配置文件
在web项目中,经常需要从properties文件获取配置信息。在Spring Boot项目中,需要使用@Value注解,即可获取application.yml(或properties)文件中的配置信息。
示例:
在yml文件中配置如下信息,注意空格
, 在控制器中通过注解获取配置信息
注意:@RestController注解相当于@ResponseBody+@Controller注解,使该类中的方法直接返回字符串或json格式的数据给浏览器,而不是返回视图界面。
打开浏览器输入地址
在真实的项目企业开发中,项目所需配置的信息往往较多,开发者需要不断使用@Value注解读取配置,并且需要保证每个属性的名称都是正确的,这就造成使用@Value注解读取配置文件诸多不便。为了解决这个问题,Spring Boot提供了另一种读取配置文件的方式---使用注解@ConfigurationProperties。他可以将YAML文件中的属性和Bean的属性进行关联,这就使得开发人员无需手动的为每一个属性编写注解。
使用@ConfigurationProperties需要注意两点:
1.指定prefix:由于实际开发中要读取的属性很多,不同实体类之间经常会存在属性名相同的情况,所以在application.yml文件配置属性时,需要添加前缀来标识对应的实体类,避免属性名同名的问题。
2.创建setter方法:@ConfigurationProperties注解实际上通过属性的setter方法来进行注入,因此要获取配置信息的相关属性需要在其所在的Bean类中创建该属性对应的setter方法。
示例:
创建用户实体类:
注意使用@Component注解,表示把普通的pojo实例化到Spring容器中,相当于是配置文件中的,就是当某个类不属于各种归类的时候(不属于@Controller,@Service等),就可以使用@Component注解来标注这个类。
在yml文件中配置该实体类的信息
在控制器中获取该实体类
完成测试
多环境配置
在实际的项目开发中,往往会有多套运行环境,比如开发环境,测试环境和生产环境。
示例:
使用yml文件:
开发环境中的代码:
测试环境中的代码:
Spring Boot的自动配置
在pom文件中引入jdbc依赖
这时启动项目会报错
根据报错信息可以看出,项目启动时自动寻找数据库连接地址的配置信息,但是由于没有找到,所以报错了。
为什么SpringBoot会自动地寻找数据库连接的地址呢?
当Spring Boot项目中引入了以下两个依赖后,会在项目中添加两个与自动配置相关的jar包
展开这两个jar包会发现在META_INF目录下面都包含名为“spring.factories”的文件
打开该文件会发现很多自动配置的类
通过之前学习可知,Spring Boot项目的启动类上需要添加@SpringBootApplication注解,该注解为复合注解,其中包含名为@EnableAutoConfiguration的注解。
进入该注解的源码,可以看到,在源码中通过@Import注解引入了AutoConfigurationSelector类。
进入这个类会发现,程序会去所有的自动配置包中寻找spring.factories文件
再从spring.factories文件中加载出所有的自动配置类,在spring.factories文件中,可以找到一个名为DataSourceAutoConfiguration的自动配置类。
进入该类的源码可以发现,此类头上添加了四个注解
@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class }) 表示你的应用必须具备DataSource类和EmbeddedDatabaseType
一开始运行没有问题,引入程序未引入jdbc相关库,造成EmbeddedDatabaseType缺失,因为该条件不满足,所以就不会往后加载配置文件相关信息,当引入之后,此时EmbeddedDatabaseType存在,那么进行下一行注解,即给@DataSourceProperties的属性赋值,在DataSourceProperties类的源代码中可以发现其包含url属性,由于没有给url属性设置默认值,所以此时项目回去application.yml文件找那个寻找该属性的值,如果在application.yml文件中依然没有找到url属性的值,此时启动项目就会报错。
所以在application.yml文件中为属性进行赋值项目即可正常运行。
LogBack日志
日志是项目运行的监控和故障排查手段,在开发和调试阶段,日志可以帮助开发中更高效,便捷的定位问题。在应用的运维阶段,日志可以记录系统运行过程中的异常信息。
Spring Boot官方把LogBack作为日志记录框架的首选。
示例:
以数据库中的用户表为实体类,进行增删改查,注意mapper文件中的相关注解。
在application.yml文件中连接数据库,并配置日志。
打开postman软件进行增删改查测试
在控制台即可看到相关日志。
增删改查效果都如上所示,这里不一一展示了。