Closed ucfjepl closed 3 years ago
dinger-spring-boot-starter的版本是1.2.0
@ucfjepl dinger-locations你是怎么配置的,是下面这样配置的吗
dinger-locations: classpath:config/dinger/.xml
@ucfjepl 不推荐使用固定文件名称进行配置
@AnswerAIL 使用固定文件名称是为了测试 如果使用dinger-locations: classpath:config/dinger/.xml配置则提示重复定义的错误 如果使用dinger-locations: classpath:config/dinger/*.xml则提示找不到文件
以下是两种配置的不同异常信息截图
@ucfjepl 你是不是用了注解配置又用了xml配置,如果不是的话把你的代码贴出来我看下,提示:报错重复定义是因为你配置了两处一样的消息体
@ucfjepl 好好检查下代码是不是重复配置了消息体,用消息id全局搜一下看,如果采用xml配置消息体用这个配置classpath:config/dinger/.xml,当然你也可以用注解方式配置消息体,两种方式任选一种即可
@AnswerAIL 找到问题了,应该是两个地方获取资源文件的方式不一致导致的,这样使用junit时就会出现问题。
在使用junit时,DingerAutoConfiguration的checkConfigFileExists方法中使用的resourceLoader.getResource获取不到xml配置,所以提示文件找不到
如果在test/resources下面创建一个对应的xml文件,DefaultDingerDefinitionResolver的dingerXmlResolver方法中使用的PathMatchingResourcePatternResolver.getResources会获取到两个配置文件,分别是main/resources和test/resources下的两个文件,此时会提示重复定义的错误
是不是应该在DingerAutoConfiguration的checkConfigFileExists和DefaultDingerDefinitionResolver的dingerXmlResolver中使用相同的方式获取资源文件可以解决掉这个问题呢?
@ucfjepl bug已在1.2.1-beta1版本中进行修复,请知悉
@AnswerAIL 好的,收到
使用固定文件名称时,exists返回的是true。如果使用*.xml则exists方法返回false springboot版本是2.3.7