禁用mongo模板

时间:2019-08-07 07:00:55

标签: mongodb spring-boot

我有一个Start-Common,它专注于将信息发送到mongodb的计划作业,它使用其他项目提供的MongoTemplate。像这样

@Component
@EnableScheduling
@ConditionalOnClass(value = MongoTemplate.class)
public class HeartbeatScheduler {

    @Autowired
    private MongoTemplate template;

    @PostConstruct
    private void init() throws IOException {
        System.err.println("start heartbeat");
   }
}

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <scope>provided</scope>
</dependency>

其他项目将导入spring-boot mongodb denpendency和此Start-Common来触发计划作业。像这样

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

<dependency>
    <groupId>com.cargosmart.b2b</groupId>
    <artifactId>B2B-Framework-Starter-Common</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

因此,当其他项目启动时,它将触发计划作业。

现在在另一个没有mongodb的环境中,我想禁用此心跳,但是我发现,一旦导入spring-boot mongodb依赖项,它将始终自动连接到MongoDb,因此会引发异常。

我尝试使用

@SpringBootApplication(exclude = {MongoAutoConfiguration.class,MongoDataAutoConfiguration.class})

禁用MongoDB自动配置,但是一旦其他项目启动,它将引发需要MongoTemplate bean的异常

Field template in com.cargosmart.start.b2b.fwk2.process.server.control.HeartbeatScheduler required a bean of type 'org.springframework.data.mongodb.core.MongoTemplate' that could not be found.
    - Bean method 'mongoTemplate' not loaded because auto-configuration 'MongoDataAutoConfiguration' was excluded

我想使用config来控制此计划的启动/停止,因为我在单一代码库下的那个环境中没有mongodb,尽管我可以删除spring-boot mongo依赖关系以确保它可以正常工作

有人知道如何处理吗?

非常感谢~~

0 个答案:

没有答案