问题描述:
- 现在有一个项目,有各个子model组成,其中有一个公用的lib包,放置一些公用的util和service供子模块使用, 但是现在产生了一个问题. A模块,B模块和C模块共同引用了一个service,该service负责发送异步的mq消息.当该service在lib包下时,除了引用的ABC模块,其他的DEFG...都需要在配置文件里面加上mq的配置文件,否则的话对应的DEF等无法启动,如何保证service即在lib下,同时其他非使用的model不需要写配置文件
解决办法
@ConditionalOn相关注解: 此注解可以实现相关功能,参考地址:@ConditionalOn
- 在ABC子model的配置文件内引入相关的配置文件
- lib下的service使用 @ConditionalOnProperty指定引入的mq配置的前缀,表示当mq配置存在时把该service注入工厂
- @ConditionalOnBean 指定name,表示当指定的类存在时,本类注入工厂