联系方式
Java服务器开发群:66728073
游戏开发者高级群:398808948
Unity3d游戏开发:286114103
SpringBoot使用与测试
2018-03-18 00:08浏览数:215 

这里总结一下spring刚开始使用时遇到的一些问题,我想对于初学者应该有些帮忙。


一,配置嵌套的问题


我在项目中使用到了redis,但是没有使用spring-boot-data-redis的包,而是自己封装的Jedis客户端。我需要在配置中配置一下redis的连接池等相关信息:application.yml如下:


图片1.png


这里明显有一个嵌套的关系配置,对应的Java properties类为:


图片2.png


第一个红框是必须有的注解,第二个红框是我遇到的问题的地方,最开始的时候,我在网上找的例子,我定义的内部类并没有public static的修饰。但是在运行的时候就会报错:


图片3.png


说找不到方法,因为以前做项目的时候,遇到过类似的问题,就立刻把public static加上了,这个错误也解决了,另一种方法是把RedisConfigPool这个类放到外面,单独定义一个类。


这个配置类加载没有问题之后,我们就可以在别的类中这样引用:


图片4.png


二,使用@Bean创建Bean


这个应该比较简单:


图片5.png


这个就是创建一个RedisClientbean.不过这里有个知识点,就是bean引用另一个bean,上图是一种方法,还可以通过方法传过来,例如:


图片6.png


三,Spring Boot 的测试


在做一个项目的时候,我首先想到的就是测试,如果写代码之后,不方便测试,对于代码的质量保证就只能靠每个人的思维能力了。而且以后重构某个功能也没有信心保证没有问题。

如果有良好的测试配合,那就方便多了。这一点spring boot也替我们想到了。


一,基本于整个项目的测试


这种方法很简单,类似于把整个项目启动成功之后,再执行项目中的某个方法。配置如下:


图片8.png


这就是我要测试的写的RedisService类的方法。注释掉的也不说,以后会解释。

这样在运行测试用命的时候,就像执行项目的main方法一样,main方法执行完之后,所有的bean都被加载到了,再执行测试用例。


二,基于某个类,单独测试


这种测试方法不用启动整个项目,只需要把测试某个类相关的类都指定进来就可以了。

图片9.png


像这种,我只是测试RedisService类,我只需要把这个类指定进来即可,包括它依赖的一些类


@ContextConfiguration 这个注解是用来指定由@Bean创建的类所在的Java配置类,即可那些在测试中用到的由@Configuration标记的类


上面这种测试方法各有优点。第一种简单粗暴,把项目中所有的类都引进来,不用手动指定。但是如果项目比较大,可能启动慢。


第二种相对来说测试启动快,只因只需要引用指定的类即可,麻烦的是我们必须手动指定那些在测试中用到的类。