SpringBoot 在测试时如何指定包的扫描范围
目录
- 在测试时如何指定包的扫描范围
- 以往…这么写
- 通过@SpringBootApplication注解配置容器的包扫描范围
- 配置扫描包范围
- 如何修改包扫描的位置?
- 方法一
- 方法二
在测试时如何指定包的扫描范围
@SpringBootTest注解,在SpringBoot在启动会根据主启动类上的@SpringBootApplication去扫描当前类及其子包下的类.当出现子包中相同类名时,容器失败.
可以通过为相同的类指定不同的ID解决,也可以通过在SpringBoot测试时指容器的包扫描范围解决。
具体如下:
以往…这么写
@RunWith(SpringRunner.class) @SpringBootTest public class IocTest { /** 测试方法等... */ }
通过@SpringBootApplication注解配置容器的包扫描范围
@RunWith(SpringRunner.class) @SpringBootApplication(scanBasePackages = "com.example.xxx") public class IocTest { /** 测试方法等... */ }
配置扫描包范围
近期在学习java的spring框架,得知使用注解需要配置包扫描的范围,然而在SpringBoot项目中的配置文件里找不到如spring类似的配置
<context:component-scan base-package=”XX.XX”/>
经查阅资料SpringBoot其实有默认的包扫描机制,启动类所在的当前包以及包的子类都会默认被扫描,所以新手在学习这个框架的时候,有时候可能因为bean和启动类不在一个文件夹下导致扫描不到引起的注解失败问题。
启动类:项目的入口函数,一般命名规范是xxxApplication.java,并且带有@SpringBootApplication的注解,也有我们常见的java中的main函数。
如何修改包扫描的位置?
方法一
在启动类的SpringBootApplication注解中配置scanBasePackages即可,如下
@SpringBootApplication(scanBasePackages = "org.sang.service")
也可以配置多个包路径
@SpringBootApplication(scanBasePackages = {"org.sang.bean","org.sang.service"})
方法二
在启动类里添加@ComponentScan注解配置basePackages
@ComponentScan(basePackages = {"org.sang.bean","org.sang.service"})
两个配置方法选择其一即可。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
springboot多模块包扫描问题的解决方法
问题描述: springboot建立多个模块,当一个模块需要使用另一个模块的服务时,需要注入另一个模块的组件,如下面图中例子: memberservice模块中的MemberServiceApiImpl类需要注入common模块中的RedisService组件,该怎么注入呢? 解决: 在memberservice模块的启动类上加上RedisService类所在包的全路径的组件扫描,就像这样: 注意启动类上方的注解@ComponentScan(basePackages={"com.whu.comm
-
详解SpringBoot启动类的扫描注解的用法及冲突原则
背景 SpringBoot 启动类上,配置扫描包路径有三种方式,最近看到一个应用上三种注解都用上了,代码如下: @SpringBootApplication(scanBasePackages ={"a","b"}) @ComponentScan(basePackages = {"a","b","c"}) @MapperScan({"XXX"}) public class XXApplic
-
Springboot自动扫描包路径来龙去脉示例详解
我们暂且标注下Springboot启动过程中较为重要的逻辑方法,源码对应的spring-boot-2.2.2.RELEASE版本 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start(); ConfigurableApplicationContext context = null; Collection<SpringBoo
-
springboot bean扫描路径的实现
1:默认扫描启动类所在路径下所有的bean 2:可以在启动类中添加注解,手动指定扫描路径: @ComponentScan(basePackages = {"com.xxx.service1.*","com.xxx.service2.**"}) 补充:SpringBoot 是如何通过 @SpringBootApplication 扫描项目中的 Bean 原因 首先因为 XXXXXXXApplication 附带 @SpringBootApplication 注解,而
-
SpringBoot 在测试时如何指定包的扫描范围
目录 在测试时如何指定包的扫描范围 以往-这么写 通过@SpringBootApplication注解配置容器的包扫描范围 配置扫描包范围 如何修改包扫描的位置? 方法一 方法二 在测试时如何指定包的扫描范围 @SpringBootTest注解,在SpringBoot在启动会根据主启动类上的@SpringBootApplication去扫描当前类及其子包下的类.当出现子包中相同类名时,容器失败. 可以通过为相同的类指定不同的ID解决,也可以通过在SpringBoot测试时指容器的包扫描范围解决.
-
hadoop运行java程序(jar包)并运行时动态指定参数
1)首先启动hadoop2个进程,进入hadoop/sbin目录下,依次启动如下命令 [root@node02 sbin]# pwd /usr/server/hadoop/hadoop-2.7.0/sbin sh start-dfs.sh sh start-yarn.sh jps 2)通过jps查看是否正确启动,确保启动如下6个程序 [root@node02 sbin]# jps 10096 DataNode 6952 NodeManager 9962 NameNode 10269 Second
-
SpringBoot停止启动时测试检查rabbitmq操作
目录 SpringBoot停止启动时测试检查rabbitmq 问题 解决 RabbitMQ的简单使用的Demo 1.声明 2.创建一个测试账户 3.pom依赖 5.创建入口类 6.测试 7.总结 SpringBoot停止启动时测试检查rabbitmq 问题 在Springboot项目中配置rabbitmq后,总是在每次启动时自动测试MQ的连接,如果测试不通过,就一直重连,导致项目无法正常启动.自己在开发与MQ无关的功能时,无法正常进行,十分耽误时间.如下所示: org.springframewo
-
SpringBoot测试时卡在Resolving Maven dependencies的问题
目录 测试时卡在Resolving Maven dependencies Maven项目缺少Maven Dependencies问题 今天搭建了一个maven项目 网上其他解决Maven Dependencies文件缺失的方法 dependencyManagement与dependencies的区别 测试时卡在Resolving Maven dependencies 有没有遇到这个问题,在测试的时候 一直卡在Resolving Maven dependencies… 框内其实因为一直下载一个Ju
-
tensorflow实现测试时读取任意指定的check point的网络参数
tensorflow在训练时会保存三个文件, model.ckpt-xxx.data-00000-of-00001 model.ckpt-xxx.index model.ckpt-xxx.meta 其中第一个储存网络参数值,第二个储存每一层的名字,第三个储存图结构 随着训练的过程,每隔一段时间都会保存一组以上三个文件,而在训练之前我们并不知道什么时候可以达到最佳的拟合,训练时间过短会导致欠拟合,训练时间过长则会导致过拟合. 如果每次测试时,我们都自动调用最新一次的check point,那很可能
-
在启动后台 jar包时,使用指定的 application.yml操作
jar 包启动时指定配置文件 application.yml nohup java -jar vPaas.jar --spring.config.location=/opt/vpaas-conf/application.yml > /opt/vpaas-conf/nohup.out 2>&1 & 如果不喜欢将 application.properties 作为配置文件名,你可以通过指 定 spring.config.name 环境属性来切换其他的名称,也可以使 用 spring
-
如何设置Spring Boot测试时的日志级别
1.概览 该教程中,我将向你展示:如何在测试时设置spring boot 日志级别.虽然我们可以在测试通过时忽略日志,但是如果需要诊断失败的测试,选择正确的日志级别是非常重要的. 2.日志级别的重要性 正确设置日志级别可以节省我们许多时间. 举例来说,如果测试在CI服务器上失败,但在开发服务器上时却通过了.我们将无法诊断失败的测试,除非有足够的日志输出. 为了获取正确数量的详细信息,我们可以微调应用程序的日志级别,如果发现某个java包对我们的测试更加重要,可以给它一个更低的日志级别,比如DEB
-
如何用SpringBoot 进行测试
普通测试 假设要测试一个工具类 StringUtil(com.rxliuli.example.springboottest.util.StringUtil) /** * 用于测试的字符串工具类 * * @author rxliuli */ public class StringUtil { /** * 判断是否为空 * * @param string 要进行判断的字符串 * @return 是否为 null 或者空字符串 */ public static boolean isEmpty(Stri
-
SpringBoot中启动时如何忽略某项检测
目录 SpringBoot启动忽略某项检测 可以在启动文件中填入 启动排除某些bean的注入 问题 SpringBoot启动忽略某项检测 在搭建springboot框架时,启动会检测某些连接是否正常,比如redis,rabbitmq等等组件,此时如果没有启动相关服务,或者你这个组件没有用到此组件,则不希望检测此项. 可以在启动文件中填入 management.health.redis.enabled: false ##启动不检测redis management.health.rabbit.ena
-
RabbitMQ开启SSL与SpringBoot连接测试的配置方法
目录 楔子 配置 RabbitMQ 开启 SSL 使用 OpenSSL CLI 工具验证证书是否有效 编写 SpringBoot 代码连接测试 参考 楔子 近期公司程序被安全扫描出 远程主机允许明文身份验证 中风险漏洞,查了下修复方案,RabbitMQ官方提供了SSL连接方式,而且 SpringBoot AMQP 也支持 SSL 连接.以下将配置RabbitMQ开启SSL 并使用 SpringBoot Demo 测试连接. PS : 写文章时此配置还未安全扫描复测,如果测试通过,本人将更新此文章
随机推荐
- Python实现图像几何变换
- Jquery选择器中使用变量实现动态选择例子
- 文本最末列数值乘一个数的批处理实现
- redis实现多进程数据同步工具代码分享
- 原生JS实现图片懒加载(lazyload)实例
- Cocos2d-x人物动作类实例
- C#读取中文字符及清空缓冲区的实现代码
- php网上商城购物车设计代码分享
- PHP+MYSQL中文乱码问题
- ThinkPHP中ajax使用实例教程
- 详细介绍Ruby中的正则表达式
- Python上下文管理器和with块详解
- mysql 双向同步的键值冲突问题的解决方法分享
- Javascript浅谈之this
- Mysql利用group by分组排序
- 详解Kotlin中的面向对象(一)
- ThinkPHP在新浪SAE平台的部署实例
- jquery插件bootstrapValidator表单验证详解
- jQuery中click事件用法实例
- java中将汉字转换成拼音的实现代码