diff --git a/hippo4j-example/src/main/resources/application.yaml b/hippo4j-example/src/main/resources/application.yaml index ef467cbe..32f0a916 100644 --- a/hippo4j-example/src/main/resources/application.yaml +++ b/hippo4j-example/src/main/resources/application.yaml @@ -19,3 +19,4 @@ spring: item-id: dynamic-threadpool-example username: admin password: 123456 + enable: true diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/BootstrapProperties.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/BootstrapProperties.java index 0c036bbf..0ca29d8e 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/BootstrapProperties.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/BootstrapProperties.java @@ -44,6 +44,11 @@ public class BootstrapProperties { */ private String itemId; + /** + * Whether to enable dynamic thread pool + */ + private Boolean enable = true; + /** * Print dynamic thread pool banner */ diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DynamicThreadPoolAutoConfiguration.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DynamicThreadPoolAutoConfiguration.java index 7adc814a..3d926fb3 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DynamicThreadPoolAutoConfiguration.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/config/DynamicThreadPoolAutoConfiguration.java @@ -23,6 +23,7 @@ import cn.hutool.core.util.IdUtil; import lombok.AllArgsConstructor; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -40,6 +41,7 @@ import org.springframework.core.env.ConfigurableEnvironment; @AllArgsConstructor @ConditionalOnBean(MarkerConfiguration.Marker.class) @EnableConfigurationProperties(BootstrapProperties.class) +@ConditionalOnProperty(prefix = BootstrapProperties.PREFIX, value = "enable", matchIfMissing = true, havingValue = "true") @ImportAutoConfiguration({HttpClientConfig.class, DiscoveryConfig.class, MessageAlarmConfig.class, UtilAutoConfiguration.class}) public class DynamicThreadPoolAutoConfiguration { diff --git a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/enable/BeforeCheckConfiguration.java b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/enable/BeforeCheckConfiguration.java index 58c0d2be..38389c0e 100644 --- a/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/enable/BeforeCheckConfiguration.java +++ b/hippo4j-spring-boot-starter/src/main/java/cn/hippo4j/starter/enable/BeforeCheckConfiguration.java @@ -4,6 +4,7 @@ import cn.hippo4j.starter.config.BootstrapProperties; import cn.hippo4j.starter.core.ConfigEmptyException; import cn.hutool.core.util.StrUtil; import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.ConfigurableEnvironment; @@ -19,53 +20,56 @@ import org.springframework.core.env.ConfigurableEnvironment; public class BeforeCheckConfiguration { @Bean - public BeforeCheckConfiguration.BeforeCheck dynamicThreadPoolBeforeCheckBean(BootstrapProperties properties, ConfigurableEnvironment environment) { - String username = properties.getUsername(); - if (StrUtil.isBlank(username)) { - throw new ConfigEmptyException( - "Web server failed to start. The dynamic thread pool username is empty.", - "Please check whether the [spring.dynamic.thread-pool.username] configuration is empty or an empty string." - ); - } + public BeforeCheckConfiguration.BeforeCheck dynamicThreadPoolBeforeCheckBean(@Autowired(required = false) BootstrapProperties properties, + ConfigurableEnvironment environment) { + if (properties != null) { + String username = properties.getUsername(); + if (StrUtil.isBlank(username)) { + throw new ConfigEmptyException( + "Web server failed to start. The dynamic thread pool username is empty.", + "Please check whether the [spring.dynamic.thread-pool.username] configuration is empty or an empty string." + ); + } - String password = properties.getPassword(); - if (StrUtil.isBlank(password)) { - throw new ConfigEmptyException( - "Web server failed to start. The dynamic thread pool password is empty.", - "Please check whether the [spring.dynamic.thread-pool.password] configuration is empty or an empty string." - ); - } + String password = properties.getPassword(); + if (StrUtil.isBlank(password)) { + throw new ConfigEmptyException( + "Web server failed to start. The dynamic thread pool password is empty.", + "Please check whether the [spring.dynamic.thread-pool.password] configuration is empty or an empty string." + ); + } - String namespace = properties.getNamespace(); - if (StrUtil.isBlank(namespace)) { - throw new ConfigEmptyException( - "Web server failed to start. The dynamic thread pool namespace is empty.", - "Please check whether the [spring.dynamic.thread-pool.namespace] configuration is empty or an empty string." - ); - } + String namespace = properties.getNamespace(); + if (StrUtil.isBlank(namespace)) { + throw new ConfigEmptyException( + "Web server failed to start. The dynamic thread pool namespace is empty.", + "Please check whether the [spring.dynamic.thread-pool.namespace] configuration is empty or an empty string." + ); + } - String itemId = properties.getItemId(); - if (StrUtil.isBlank(itemId)) { - throw new ConfigEmptyException( - "Web server failed to start. The dynamic thread pool item id is empty.", - "Please check whether the [spring.dynamic.thread-pool.item-id] configuration is empty or an empty string." - ); - } + String itemId = properties.getItemId(); + if (StrUtil.isBlank(itemId)) { + throw new ConfigEmptyException( + "Web server failed to start. The dynamic thread pool item id is empty.", + "Please check whether the [spring.dynamic.thread-pool.item-id] configuration is empty or an empty string." + ); + } - String serverAddr = properties.getServerAddr(); - if (StrUtil.isBlank(serverAddr)) { - throw new ConfigEmptyException( - "Web server failed to start. The dynamic thread pool server addr is empty.", - "Please check whether the [spring.dynamic.thread-pool.server-addr] configuration is empty or an empty string." - ); - } + String serverAddr = properties.getServerAddr(); + if (StrUtil.isBlank(serverAddr)) { + throw new ConfigEmptyException( + "Web server failed to start. The dynamic thread pool server addr is empty.", + "Please check whether the [spring.dynamic.thread-pool.server-addr] configuration is empty or an empty string." + ); + } - String applicationName = environment.getProperty("spring.application.name"); - if (StrUtil.isBlank(applicationName)) { - throw new ConfigEmptyException( - "Web server failed to start. The dynamic thread pool application name is empty.", - "Please check whether the [spring.application.name] configuration is empty or an empty string." - ); + String applicationName = environment.getProperty("spring.application.name"); + if (StrUtil.isBlank(applicationName)) { + throw new ConfigEmptyException( + "Web server failed to start. The dynamic thread pool application name is empty.", + "Please check whether the [spring.application.name] configuration is empty or an empty string." + ); + } } return new BeforeCheckConfiguration.BeforeCheck();