|
@@ -19,6 +19,10 @@ package com.ctrip.framework.apollo.configservice;
|
|
|
import com.ctrip.framework.apollo.biz.config.BizConfig;
|
|
|
import com.ctrip.framework.apollo.biz.grayReleaseRule.GrayReleaseRulesHolder;
|
|
|
import com.ctrip.framework.apollo.biz.message.ReleaseMessageScanner;
|
|
|
+import com.ctrip.framework.apollo.biz.repository.GrayReleaseRuleRepository;
|
|
|
+import com.ctrip.framework.apollo.biz.repository.ReleaseMessageRepository;
|
|
|
+import com.ctrip.framework.apollo.biz.service.ReleaseMessageService;
|
|
|
+import com.ctrip.framework.apollo.biz.service.ReleaseService;
|
|
|
import com.ctrip.framework.apollo.configservice.controller.ConfigFileController;
|
|
|
import com.ctrip.framework.apollo.configservice.controller.NotificationController;
|
|
|
import com.ctrip.framework.apollo.configservice.controller.NotificationControllerV2;
|
|
@@ -40,22 +44,32 @@ import org.springframework.security.crypto.password.NoOpPasswordEncoder;
|
|
|
public class ConfigServiceAutoConfiguration {
|
|
|
|
|
|
private final BizConfig bizConfig;
|
|
|
+ private final ReleaseService releaseService;
|
|
|
+ private final ReleaseMessageService releaseMessageService;
|
|
|
+ private final GrayReleaseRuleRepository grayReleaseRuleRepository;
|
|
|
|
|
|
- public ConfigServiceAutoConfiguration(final BizConfig bizConfig) {
|
|
|
+ public ConfigServiceAutoConfiguration(final BizConfig bizConfig,
|
|
|
+ final ReleaseService releaseService,
|
|
|
+ final ReleaseMessageService releaseMessageService,
|
|
|
+ final GrayReleaseRuleRepository grayReleaseRuleRepository) {
|
|
|
this.bizConfig = bizConfig;
|
|
|
+ this.releaseService = releaseService;
|
|
|
+ this.releaseMessageService = releaseMessageService;
|
|
|
+ this.grayReleaseRuleRepository = grayReleaseRuleRepository;
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
public GrayReleaseRulesHolder grayReleaseRulesHolder() {
|
|
|
- return new GrayReleaseRulesHolder();
|
|
|
+ return new GrayReleaseRulesHolder(grayReleaseRuleRepository, bizConfig);
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
public ConfigService configService() {
|
|
|
if (bizConfig.isConfigServiceCacheEnabled()) {
|
|
|
- return new ConfigServiceWithCache();
|
|
|
+ return new ConfigServiceWithCache(releaseService, releaseMessageService,
|
|
|
+ grayReleaseRulesHolder());
|
|
|
}
|
|
|
- return new DefaultConfigService();
|
|
|
+ return new DefaultConfigService(releaseService, grayReleaseRulesHolder());
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
@@ -64,8 +78,8 @@ public class ConfigServiceAutoConfiguration {
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
- public FilterRegistrationBean clientAuthenticationFilter(AccessKeyUtil accessKeyUtil) {
|
|
|
- FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
|
|
|
+ public FilterRegistrationBean<ClientAuthenticationFilter> clientAuthenticationFilter(AccessKeyUtil accessKeyUtil) {
|
|
|
+ FilterRegistrationBean<ClientAuthenticationFilter> filterRegistrationBean = new FilterRegistrationBean<>();
|
|
|
|
|
|
filterRegistrationBean.setFilter(new ClientAuthenticationFilter(bizConfig, accessKeyUtil));
|
|
|
filterRegistrationBean.addUrlPatterns("/configs/*");
|
|
@@ -83,6 +97,8 @@ public class ConfigServiceAutoConfiguration {
|
|
|
private final GrayReleaseRulesHolder grayReleaseRulesHolder;
|
|
|
private final ReleaseMessageServiceWithCache releaseMessageServiceWithCache;
|
|
|
private final ConfigService configService;
|
|
|
+ private final BizConfig bizConfig;
|
|
|
+ private final ReleaseMessageRepository releaseMessageRepository;
|
|
|
|
|
|
public MessageScannerConfiguration(
|
|
|
final NotificationController notificationController,
|
|
@@ -90,18 +106,23 @@ public class ConfigServiceAutoConfiguration {
|
|
|
final NotificationControllerV2 notificationControllerV2,
|
|
|
final GrayReleaseRulesHolder grayReleaseRulesHolder,
|
|
|
final ReleaseMessageServiceWithCache releaseMessageServiceWithCache,
|
|
|
- final ConfigService configService) {
|
|
|
+ final ConfigService configService,
|
|
|
+ final BizConfig bizConfig,
|
|
|
+ final ReleaseMessageRepository releaseMessageRepository) {
|
|
|
this.notificationController = notificationController;
|
|
|
this.configFileController = configFileController;
|
|
|
this.notificationControllerV2 = notificationControllerV2;
|
|
|
this.grayReleaseRulesHolder = grayReleaseRulesHolder;
|
|
|
this.releaseMessageServiceWithCache = releaseMessageServiceWithCache;
|
|
|
this.configService = configService;
|
|
|
+ this.bizConfig = bizConfig;
|
|
|
+ this.releaseMessageRepository = releaseMessageRepository;
|
|
|
}
|
|
|
|
|
|
@Bean
|
|
|
public ReleaseMessageScanner releaseMessageScanner() {
|
|
|
- ReleaseMessageScanner releaseMessageScanner = new ReleaseMessageScanner();
|
|
|
+ ReleaseMessageScanner releaseMessageScanner = new ReleaseMessageScanner(bizConfig,
|
|
|
+ releaseMessageRepository);
|
|
|
//0. handle release message cache
|
|
|
releaseMessageScanner.addMessageListener(releaseMessageServiceWithCache);
|
|
|
//1. handle gray release rule
|