我有一个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依赖关系以确保它可以正常工作
有人知道如何处理吗?
非常感谢~~