diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolder.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolder.java index 5a852ffeace..5c2d18cd961 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolder.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolder.java @@ -43,7 +43,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import java.util.List; @@ -60,10 +59,8 @@ public class GrayReleaseRulesHolder implements ReleaseMessageListener, Initializ private static final Logger logger = LoggerFactory.getLogger(GrayReleaseRulesHolder.class); private static final Joiner STRING_JOINER = Joiner.on(ConfigConsts.CLUSTER_NAMESPACE_SEPARATOR); - @Autowired - private GrayReleaseRuleRepository grayReleaseRuleRepository; - @Autowired - private BizConfig bizConfig; + private final GrayReleaseRuleRepository grayReleaseRuleRepository; + private final BizConfig bizConfig; private int databaseScanInterval; private ScheduledExecutorService executorService; @@ -74,7 +71,10 @@ public class GrayReleaseRulesHolder implements ReleaseMessageListener, Initializ //an auto increment version to indicate the age of rules private AtomicLong loadVersion; - public GrayReleaseRulesHolder() { + public GrayReleaseRulesHolder(final GrayReleaseRuleRepository grayReleaseRuleRepository, + final BizConfig bizConfig) { + this.grayReleaseRuleRepository = grayReleaseRuleRepository; + this.bizConfig = bizConfig; loadVersion = new AtomicLong(); grayReleaseRuleCache = Multimaps.synchronizedSetMultimap( TreeMultimap.create(String.CASE_INSENSITIVE_ORDER, Ordering.natural())); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScanner.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScanner.java index e8f505f2bf0..182b8fa5371 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScanner.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScanner.java @@ -29,7 +29,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import com.ctrip.framework.apollo.biz.config.BizConfig; @@ -46,17 +45,18 @@ public class ReleaseMessageScanner implements InitializingBean { private static final Logger logger = LoggerFactory.getLogger(ReleaseMessageScanner.class); private static final int missingReleaseMessageMaxAge = 10; // hardcoded to 10, could be configured via BizConfig if necessary - @Autowired - private BizConfig bizConfig; - @Autowired - private ReleaseMessageRepository releaseMessageRepository; + private final BizConfig bizConfig; + private final ReleaseMessageRepository releaseMessageRepository; private int databaseScanInterval; private final List listeners; private final ScheduledExecutorService executorService; private final Map missingReleaseMessages; // missing release message id => age counter private long maxIdScanned; - public ReleaseMessageScanner() { + public ReleaseMessageScanner(final BizConfig bizConfig, + final ReleaseMessageRepository releaseMessageRepository) { + this.bizConfig = bizConfig; + this.releaseMessageRepository = releaseMessageRepository; listeners = Lists.newCopyOnWriteArrayList(); executorService = Executors.newScheduledThreadPool(1, ApolloThreadFactory .create("ReleaseMessageScanner", true)); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySource.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySource.java index b27bc501aee..66b198c3289 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySource.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySource.java @@ -41,15 +41,19 @@ public class BizDBPropertySource extends RefreshablePropertySource { private static final Logger logger = LoggerFactory.getLogger(BizDBPropertySource.class); - @Autowired - private ServerConfigRepository serverConfigRepository; + private final ServerConfigRepository serverConfigRepository; - public BizDBPropertySource(String name, Map source) { + public BizDBPropertySource(final String name, + final Map source, + final ServerConfigRepository serverConfigRepository) { super(name, source); + this.serverConfigRepository = serverConfigRepository; } - public BizDBPropertySource() { + @Autowired + public BizDBPropertySource(final ServerConfigRepository serverConfigRepository) { super("DBConfig", Maps.newConcurrentMap()); + this.serverConfigRepository = serverConfigRepository; } String getCurrentDataCenter() { diff --git a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/config/BizConfigTest.java b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/config/BizConfigTest.java index 807e472a964..53bb003f077 100644 --- a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/config/BizConfigTest.java +++ b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/config/BizConfigTest.java @@ -16,6 +16,7 @@ */ package com.ctrip.framework.apollo.biz.config; +import com.ctrip.framework.apollo.biz.repository.ServerConfigRepository; import com.ctrip.framework.apollo.biz.service.BizDBPropertySource; import org.junit.Before; import org.junit.Test; @@ -36,12 +37,14 @@ public class BizConfigTest { @Mock private ConfigurableEnvironment environment; + @Mock + private ServerConfigRepository serverConfigRepository; private BizConfig bizConfig; @Before public void setUp() throws Exception { - bizConfig = new BizConfig(new BizDBPropertySource()); + bizConfig = new BizConfig(new BizDBPropertySource(serverConfigRepository)); ReflectionTestUtils.setField(bizConfig, "environment", environment); } diff --git a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolderTest.java b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolderTest.java index 6de8bad2c0e..8a17f15e1bd 100644 --- a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolderTest.java +++ b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/grayReleaseRule/GrayReleaseRulesHolderTest.java @@ -35,7 +35,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.test.util.ReflectionTestUtils; import java.util.List; import java.util.Set; @@ -64,11 +63,7 @@ public class GrayReleaseRulesHolderTest { @Before public void setUp() throws Exception { - grayReleaseRulesHolder = spy(new GrayReleaseRulesHolder()); - ReflectionTestUtils.setField(grayReleaseRulesHolder, "bizConfig", - bizConfig); - ReflectionTestUtils.setField(grayReleaseRulesHolder, "grayReleaseRuleRepository", - grayReleaseRuleRepository); + grayReleaseRulesHolder = spy(new GrayReleaseRulesHolder(grayReleaseRuleRepository, bizConfig)); idCounter = new AtomicLong(); } diff --git a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScannerTest.java b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScannerTest.java index ab56ab36b9b..0b247f2e236 100644 --- a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScannerTest.java +++ b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/message/ReleaseMessageScannerTest.java @@ -30,7 +30,6 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.springframework.test.util.ReflectionTestUtils; import java.util.concurrent.TimeUnit; @@ -52,10 +51,7 @@ public class ReleaseMessageScannerTest extends AbstractUnitTest { @Before public void setUp() throws Exception { - releaseMessageScanner = new ReleaseMessageScanner(); - ReflectionTestUtils - .setField(releaseMessageScanner, "releaseMessageRepository", releaseMessageRepository); - ReflectionTestUtils.setField(releaseMessageScanner, "bizConfig", bizConfig); + releaseMessageScanner = new ReleaseMessageScanner(bizConfig, releaseMessageRepository); databaseScanInterval = 100; //100 ms when(bizConfig.releaseMessageScanIntervalInMilli()).thenReturn(databaseScanInterval); releaseMessageScanner.afterPropertiesSet(); diff --git a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySourceTest.java b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySourceTest.java index 1cbf57e9455..01d5036d720 100644 --- a/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySourceTest.java +++ b/apollo-biz/src/test/java/com/ctrip/framework/apollo/biz/service/BizDBPropertySourceTest.java @@ -28,7 +28,6 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.springframework.test.util.ReflectionTestUtils; import java.util.List; @@ -55,8 +54,7 @@ public class BizDBPropertySourceTest extends AbstractUnitTest { @Before public void initTestData() { - propertySource = spy(new BizDBPropertySource()); - ReflectionTestUtils.setField(propertySource, "serverConfigRepository", serverConfigRepository); + propertySource = spy(new BizDBPropertySource(serverConfigRepository)); List configs = Lists.newLinkedList(); diff --git a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/ConfigServiceAutoConfiguration.java b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/ConfigServiceAutoConfiguration.java index 1f23971113f..ba6a31877ac 100644 --- a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/ConfigServiceAutoConfiguration.java +++ b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/ConfigServiceAutoConfiguration.java @@ -19,6 +19,10 @@ 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 @@ 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 static NoOpPasswordEncoder passwordEncoder() { } @Bean - public FilterRegistrationBean clientAuthenticationFilter(AccessKeyUtil accessKeyUtil) { - FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); + public FilterRegistrationBean clientAuthenticationFilter(AccessKeyUtil accessKeyUtil) { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean<>(); filterRegistrationBean.setFilter(new ClientAuthenticationFilter(bizConfig, accessKeyUtil)); filterRegistrationBean.addUrlPatterns("/configs/*"); @@ -83,6 +97,8 @@ static class MessageScannerConfiguration { 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 MessageScannerConfiguration( 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 diff --git a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java index 008ded2a7d4..d26de62d5d4 100644 --- a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java +++ b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java @@ -86,7 +86,6 @@ public class NotificationControllerV2 implements ReleaseMessageListener { private final Gson gson; private final BizConfig bizConfig; - @Autowired public NotificationControllerV2( final WatchKeysUtil watchKeysUtil, final ReleaseMessageServiceWithCache releaseMessageService, diff --git a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/AccessKeyServiceWithCache.java b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/AccessKeyServiceWithCache.java index d81c6192d44..07956a636c6 100644 --- a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/AccessKeyServiceWithCache.java +++ b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/AccessKeyServiceWithCache.java @@ -66,8 +66,8 @@ public class AccessKeyServiceWithCache implements InitializingBean { private ListMultimap accessKeyCache; private ConcurrentMap accessKeyIdCache; - @Autowired - public AccessKeyServiceWithCache(AccessKeyRepository accessKeyRepository, BizConfig bizConfig) { + public AccessKeyServiceWithCache(final AccessKeyRepository accessKeyRepository, + final BizConfig bizConfig) { this.accessKeyRepository = accessKeyRepository; this.bizConfig = bizConfig; diff --git a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/AbstractConfigService.java b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/AbstractConfigService.java index 6756a436a70..1c3e3508689 100644 --- a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/AbstractConfigService.java +++ b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/AbstractConfigService.java @@ -24,14 +24,17 @@ import com.google.common.base.Strings; import java.util.Objects; -import org.springframework.beans.factory.annotation.Autowired; /** * @author Jason Song(song_s@ctrip.com) */ public abstract class AbstractConfigService implements ConfigService { - @Autowired - private GrayReleaseRulesHolder grayReleaseRulesHolder; + + private final GrayReleaseRulesHolder grayReleaseRulesHolder; + + protected AbstractConfigService(final GrayReleaseRulesHolder grayReleaseRulesHolder) { + this.grayReleaseRulesHolder = grayReleaseRulesHolder; + } @Override public Release loadConfig(String clientAppId, String clientIp, String clientLabel, String configAppId, String configClusterName, diff --git a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCache.java b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCache.java index 450eccca5b3..db4c0111506 100644 --- a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCache.java +++ b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCache.java @@ -16,6 +16,7 @@ */ package com.ctrip.framework.apollo.configservice.service.config; +import com.ctrip.framework.apollo.biz.grayReleaseRule.GrayReleaseRulesHolder; import com.google.common.base.Strings; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -37,7 +38,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import java.util.List; import java.util.concurrent.TimeUnit; @@ -59,11 +59,8 @@ public class ConfigServiceWithCache extends AbstractConfigService { private static final String TRACER_EVENT_CACHE_GET = "ConfigCache.Get"; private static final String TRACER_EVENT_CACHE_GET_ID = "ConfigCache.GetById"; - @Autowired - private ReleaseService releaseService; - - @Autowired - private ReleaseMessageService releaseMessageService; + private final ReleaseService releaseService; + private final ReleaseMessageService releaseMessageService; private LoadingCache configCache; @@ -71,7 +68,12 @@ public class ConfigServiceWithCache extends AbstractConfigService { private ConfigCacheEntry nullConfigCacheEntry; - public ConfigServiceWithCache() { + public ConfigServiceWithCache(final ReleaseService releaseService, + final ReleaseMessageService releaseMessageService, + final GrayReleaseRulesHolder grayReleaseRulesHolder) { + super(grayReleaseRulesHolder); + this.releaseService = releaseService; + this.releaseMessageService = releaseMessageService; nullConfigCacheEntry = new ConfigCacheEntry(ConfigConsts.NOTIFICATION_ID_PLACEHOLDER, null); } diff --git a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigService.java b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigService.java index cc4014d64f5..2dbbb263f4f 100644 --- a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigService.java +++ b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigService.java @@ -18,11 +18,10 @@ import com.ctrip.framework.apollo.biz.entity.Release; import com.ctrip.framework.apollo.biz.entity.ReleaseMessage; +import com.ctrip.framework.apollo.biz.grayReleaseRule.GrayReleaseRulesHolder; import com.ctrip.framework.apollo.biz.service.ReleaseService; import com.ctrip.framework.apollo.core.dto.ApolloNotificationMessages; -import org.springframework.beans.factory.annotation.Autowired; - /** * config service with no cache * @@ -30,8 +29,15 @@ */ public class DefaultConfigService extends AbstractConfigService { - @Autowired - private ReleaseService releaseService; + private final ReleaseService releaseService; + private final GrayReleaseRulesHolder grayReleaseRulesHolder; + + public DefaultConfigService(final ReleaseService releaseService, + final GrayReleaseRulesHolder grayReleaseRulesHolder) { + super(grayReleaseRulesHolder); + this.releaseService = releaseService; + this.grayReleaseRulesHolder = grayReleaseRulesHolder; + } @Override protected Release findActiveOne(long id, ApolloNotificationMessages clientMessages) { diff --git a/apollo-configservice/src/test/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCacheTest.java b/apollo-configservice/src/test/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCacheTest.java index 1e4aa3ba001..179c808b6b8 100644 --- a/apollo-configservice/src/test/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCacheTest.java +++ b/apollo-configservice/src/test/java/com/ctrip/framework/apollo/configservice/service/config/ConfigServiceWithCacheTest.java @@ -16,6 +16,7 @@ */ package com.ctrip.framework.apollo.configservice.service.config; +import com.ctrip.framework.apollo.biz.grayReleaseRule.GrayReleaseRulesHolder; import com.ctrip.framework.apollo.core.dto.ApolloNotificationMessages; import com.google.common.collect.Lists; @@ -31,7 +32,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.test.util.ReflectionTestUtils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -55,6 +55,8 @@ public class ConfigServiceWithCacheTest { private Release someRelease; @Mock private ReleaseMessage someReleaseMessage; + @Mock + private GrayReleaseRulesHolder grayReleaseRulesHolder; private String someAppId; private String someClusterName; @@ -65,10 +67,8 @@ public class ConfigServiceWithCacheTest { @Before public void setUp() throws Exception { - configServiceWithCache = new ConfigServiceWithCache(); - ReflectionTestUtils.setField(configServiceWithCache, "releaseService", releaseService); - ReflectionTestUtils.setField(configServiceWithCache, "releaseMessageService", releaseMessageService); - + configServiceWithCache = new ConfigServiceWithCache(releaseService, releaseMessageService, + grayReleaseRulesHolder); configServiceWithCache.initialize(); someAppId = "someAppId"; diff --git a/apollo-configservice/src/test/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigServiceTest.java b/apollo-configservice/src/test/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigServiceTest.java index a4957764f9a..5b302672470 100644 --- a/apollo-configservice/src/test/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigServiceTest.java +++ b/apollo-configservice/src/test/java/com/ctrip/framework/apollo/configservice/service/config/DefaultConfigServiceTest.java @@ -34,7 +34,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.springframework.test.util.ReflectionTestUtils; /** * @author Jason Song(song_s@ctrip.com) @@ -62,9 +61,7 @@ public class DefaultConfigServiceTest { @Before public void setUp() throws Exception { - configService = new DefaultConfigService(); - ReflectionTestUtils.setField(configService, "releaseService", releaseService); - ReflectionTestUtils.setField(configService, "grayReleaseRulesHolder", grayReleaseRulesHolder); + configService = new DefaultConfigService(releaseService, grayReleaseRulesHolder); someClientAppId = "1234"; someConfigAppId = "1"; diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/PermissionValidator.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/PermissionValidator.java index 01ce695eaba..ecda7166ada 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/PermissionValidator.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/PermissionValidator.java @@ -24,7 +24,6 @@ import com.ctrip.framework.apollo.portal.service.SystemRoleManagerService; import com.ctrip.framework.apollo.portal.spi.UserInfoHolder; import com.ctrip.framework.apollo.portal.util.RoleUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component("permissionValidator") @@ -36,7 +35,6 @@ public class PermissionValidator { private final AppNamespaceService appNamespaceService; private final SystemRoleManagerService systemRoleManagerService; - @Autowired public PermissionValidator( final UserInfoHolder userInfoHolder, final RolePermissionService rolePermissionService, diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/RestTemplateFactory.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/RestTemplateFactory.java index 4a53a2141c6..4d4c73e1d68 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/RestTemplateFactory.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/RestTemplateFactory.java @@ -21,7 +21,6 @@ import org.apache.http.impl.client.HttpClientBuilder; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.stereotype.Component; @@ -32,13 +31,17 @@ @Component public class RestTemplateFactory implements FactoryBean, InitializingBean { - @Autowired - private HttpMessageConverters httpMessageConverters; - @Autowired - private PortalConfig portalConfig; + private final HttpMessageConverters httpMessageConverters; + private final PortalConfig portalConfig; private RestTemplate restTemplate; + public RestTemplateFactory(final HttpMessageConverters httpMessageConverters, + final PortalConfig portalConfig) { + this.httpMessageConverters = httpMessageConverters; + this.portalConfig = portalConfig; + } + public RestTemplate getObject() { return restTemplate; } diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java index 515fc15c513..9cb4eb54ca8 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java @@ -57,7 +57,6 @@ public class PermissionController { private final SystemRoleManagerService systemRoleManagerService; private final PermissionValidator permissionValidator; - @Autowired public PermissionController( final UserInfoHolder userInfoHolder, final RolePermissionService rolePermissionService, diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalDBPropertySource.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalDBPropertySource.java index aa7413e069d..a7bd3f55836 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalDBPropertySource.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/PortalDBPropertySource.java @@ -38,15 +38,18 @@ public class PortalDBPropertySource extends RefreshablePropertySource { private static final Logger logger = LoggerFactory.getLogger(PortalDBPropertySource.class); - @Autowired - private ServerConfigRepository serverConfigRepository; + private final ServerConfigRepository serverConfigRepository; - public PortalDBPropertySource(String name, Map source) { + public PortalDBPropertySource(final String name, + final Map source, + final ServerConfigRepository serverConfigRepository) { super(name, source); + this.serverConfigRepository = serverConfigRepository; } - - public PortalDBPropertySource() { + @Autowired + public PortalDBPropertySource(final ServerConfigRepository serverConfigRepository) { super("DBConfig", Maps.newConcurrentMap()); + this.serverConfigRepository = serverConfigRepository; } @Override diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/SystemRoleManagerService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/SystemRoleManagerService.java index ab6c6799486..ad696c62fe5 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/SystemRoleManagerService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/SystemRoleManagerService.java @@ -22,7 +22,6 @@ import javax.annotation.PostConstruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service @@ -42,7 +41,6 @@ public class SystemRoleManagerService { private final RoleInitializationService roleInitializationService; - @Autowired public SystemRoleManagerService(final RolePermissionService rolePermissionService, final PortalConfig portalConfig, final RoleInitializationService roleInitializationService) { diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/configuration/AuthConfiguration.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/configuration/AuthConfiguration.java index f2ba9f5e8dd..d7bfcd078fb 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/configuration/AuthConfiguration.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/configuration/AuthConfiguration.java @@ -195,10 +195,14 @@ static class SpringSecurityLDAPAuthAutoConfiguration { private final LdapProperties properties; private final Environment environment; + private final LdapTemplate ldapTemplate; - public SpringSecurityLDAPAuthAutoConfiguration(final LdapProperties properties, final Environment environment) { + public SpringSecurityLDAPAuthAutoConfiguration(final LdapProperties properties, + final Environment environment, + final LdapTemplate ldapTemplate) { this.properties = properties; this.environment = environment; + this.ldapTemplate = ldapTemplate; } @Bean @@ -222,7 +226,7 @@ public LogoutHandler logoutHandler() { @Bean @ConditionalOnMissingBean(UserService.class) public UserService springSecurityUserService() { - return new LdapUserService(); + return new LdapUserService(ldapTemplate); } @Bean diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/configuration/RoleConfiguration.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/configuration/RoleConfiguration.java index 591cf81c075..4c9294e8e6b 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/configuration/RoleConfiguration.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/configuration/RoleConfiguration.java @@ -16,8 +16,15 @@ */ package com.ctrip.framework.apollo.portal.spi.configuration; +import com.ctrip.framework.apollo.openapi.repository.ConsumerRoleRepository; +import com.ctrip.framework.apollo.portal.component.config.PortalConfig; +import com.ctrip.framework.apollo.portal.repository.PermissionRepository; +import com.ctrip.framework.apollo.portal.repository.RolePermissionRepository; +import com.ctrip.framework.apollo.portal.repository.RoleRepository; +import com.ctrip.framework.apollo.portal.repository.UserRoleRepository; import com.ctrip.framework.apollo.portal.service.RoleInitializationService; import com.ctrip.framework.apollo.portal.service.RolePermissionService; +import com.ctrip.framework.apollo.portal.spi.UserService; import com.ctrip.framework.apollo.portal.spi.defaultimpl.DefaultRoleInitializationService; import com.ctrip.framework.apollo.portal.spi.defaultimpl.DefaultRolePermissionService; import org.springframework.context.annotation.Bean; @@ -28,13 +35,41 @@ */ @Configuration public class RoleConfiguration { + + private final RoleRepository roleRepository; + private final RolePermissionRepository rolePermissionRepository; + private final UserRoleRepository userRoleRepository; + private final PermissionRepository permissionRepository; + private final PortalConfig portalConfig; + private final ConsumerRoleRepository consumerRoleRepository; + private final UserService userService; + + public RoleConfiguration(final RoleRepository roleRepository, + final RolePermissionRepository rolePermissionRepository, + final UserRoleRepository userRoleRepository, + final PermissionRepository permissionRepository, + final PortalConfig portalConfig, + final ConsumerRoleRepository consumerRoleRepository, + final UserService userService) { + this.roleRepository = roleRepository; + this.rolePermissionRepository = rolePermissionRepository; + this.userRoleRepository = userRoleRepository; + this.permissionRepository = permissionRepository; + this.portalConfig = portalConfig; + this.consumerRoleRepository = consumerRoleRepository; + this.userService = userService; + } + @Bean public RoleInitializationService roleInitializationService() { - return new DefaultRoleInitializationService(); + return new DefaultRoleInitializationService(rolePermissionService(), portalConfig, + permissionRepository); } @Bean public RolePermissionService rolePermissionService() { - return new DefaultRolePermissionService(); + return new DefaultRolePermissionService(roleRepository, rolePermissionRepository, + userRoleRepository, permissionRepository, portalConfig, consumerRoleRepository, + userService); } } diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/defaultimpl/DefaultRoleInitializationService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/defaultimpl/DefaultRoleInitializationService.java index 178600cf40b..ddb78400741 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/defaultimpl/DefaultRoleInitializationService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/defaultimpl/DefaultRoleInitializationService.java @@ -31,7 +31,6 @@ import com.ctrip.framework.apollo.portal.service.SystemRoleManagerService; import com.ctrip.framework.apollo.portal.util.RoleUtils; import com.google.common.collect.Sets; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import java.util.HashSet; @@ -45,12 +44,17 @@ */ public class DefaultRoleInitializationService implements RoleInitializationService { - @Autowired - private RolePermissionService rolePermissionService; - @Autowired - private PortalConfig portalConfig; - @Autowired - private PermissionRepository permissionRepository; + private final RolePermissionService rolePermissionService; + private final PortalConfig portalConfig; + private final PermissionRepository permissionRepository; + + public DefaultRoleInitializationService(final RolePermissionService rolePermissionService, + final PortalConfig portalConfig, + final PermissionRepository permissionRepository) { + this.rolePermissionService = rolePermissionService; + this.portalConfig = portalConfig; + this.permissionRepository = permissionRepository; + } @Transactional public void initAppRoles(App app) { diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/defaultimpl/DefaultRolePermissionService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/defaultimpl/DefaultRolePermissionService.java index e6a46039776..ef48d436fc0 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/defaultimpl/DefaultRolePermissionService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/defaultimpl/DefaultRolePermissionService.java @@ -36,7 +36,6 @@ import com.google.common.collect.Sets; import java.util.Comparator; import java.util.LinkedHashSet; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -52,20 +51,30 @@ * Created by timothy on 2017/4/26. */ public class DefaultRolePermissionService implements RolePermissionService { - @Autowired - private RoleRepository roleRepository; - @Autowired - private RolePermissionRepository rolePermissionRepository; - @Autowired - private UserRoleRepository userRoleRepository; - @Autowired - private PermissionRepository permissionRepository; - @Autowired - private PortalConfig portalConfig; - @Autowired - private ConsumerRoleRepository consumerRoleRepository; - @Autowired - private UserService userService; + + private final RoleRepository roleRepository; + private final RolePermissionRepository rolePermissionRepository; + private final UserRoleRepository userRoleRepository; + private final PermissionRepository permissionRepository; + private final PortalConfig portalConfig; + private final ConsumerRoleRepository consumerRoleRepository; + private final UserService userService; + + public DefaultRolePermissionService(final RoleRepository roleRepository, + final RolePermissionRepository rolePermissionRepository, + final UserRoleRepository userRoleRepository, + final PermissionRepository permissionRepository, + final PortalConfig portalConfig, + final ConsumerRoleRepository consumerRoleRepository, + final UserService userService) { + this.roleRepository = roleRepository; + this.rolePermissionRepository = rolePermissionRepository; + this.userRoleRepository = userRoleRepository; + this.permissionRepository = permissionRepository; + this.portalConfig = portalConfig; + this.consumerRoleRepository = consumerRoleRepository; + this.userService = userService; + } /** * Create role with permissions, note that role name should be unique diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/ldap/LdapUserService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/ldap/LdapUserService.java index 33ea2d209af..adb2fb0a7ab 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/ldap/LdapUserService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/ldap/LdapUserService.java @@ -22,8 +22,6 @@ import com.ctrip.framework.apollo.portal.entity.bo.UserInfo; import com.ctrip.framework.apollo.portal.spi.UserService; -import com.ctrip.framework.apollo.portal.spi.configuration.LdapExtendProperties; -import com.ctrip.framework.apollo.portal.spi.configuration.LdapProperties; import com.google.common.base.Strings; import com.google.common.collect.Sets; import java.util.ArrayList; @@ -35,7 +33,6 @@ import javax.naming.directory.Attribute; import javax.naming.ldap.LdapName; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.ldap.core.AttributesMapper; @@ -59,11 +56,7 @@ */ public class LdapUserService implements UserService { - @Autowired - private LdapProperties ldapProperties; - - @Autowired - private LdapExtendProperties ldapExtendProperties; + private final LdapTemplate ldapTemplate; /** * ldap search base @@ -125,13 +118,13 @@ public class LdapUserService implements UserService { @Value("${ldap.group.groupMembership:}") private String groupMembershipAttrName; - - @Autowired - private LdapTemplate ldapTemplate; - private static final String MEMBER_OF_ATTR_NAME = "memberOf"; private static final String MEMBER_UID_ATTR_NAME = "memberUid"; + public LdapUserService(final LdapTemplate ldapTemplate) { + this.ldapTemplate = ldapTemplate; + } + /** * 用户信息Mapper */