ParserSupportConfiguration.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * DBSyncer Copyright 2020-2024 All Rights Reserved.
  3. */
  4. package org.dbsyncer.parser;
  5. import org.dbsyncer.parser.flush.impl.TableGroupBufferActuator;
  6. import org.dbsyncer.sdk.spi.TableGroupBufferActuatorService;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
  10. import org.springframework.context.annotation.Bean;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.context.annotation.DependsOn;
  13. import java.util.ServiceLoader;
  14. /**
  15. * @Author AE86
  16. * @Version 1.0.0
  17. * @Date 2024-01-25 23:43
  18. */
  19. @Configuration
  20. public class ParserSupportConfiguration {
  21. private final Logger logger = LoggerFactory.getLogger(getClass());
  22. @Bean
  23. @ConditionalOnMissingBean
  24. @DependsOn(value = "licenseService")
  25. public TableGroupBufferActuator tableGroupBufferActuator() {
  26. ServiceLoader<TableGroupBufferActuatorService> services = ServiceLoader.load(TableGroupBufferActuatorService.class, Thread.currentThread().getContextClassLoader());
  27. for (TableGroupBufferActuatorService s : services) {
  28. try {
  29. TableGroupBufferActuatorService service = s.getClass().newInstance();
  30. if (service instanceof TableGroupBufferActuator) {
  31. return (TableGroupBufferActuator) service;
  32. }
  33. } catch (Exception e) {
  34. logger.error(e.getMessage(), e);
  35. throw new ParserException("获取TableGroupBufferActuator异常.");
  36. }
  37. }
  38. return new TableGroupBufferActuator();
  39. }
  40. }