This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 0f4d00892 [SCB-2785]support spring boot auto configure and remove
component scan (#3684)
0f4d00892 is described below
commit 0f4d0089232238abfdb357bf3c872fabcbb9d5c4
Author: liubao68 <[email protected]>
AuthorDate: Mon Feb 27 19:38:08 2023 +0800
[SCB-2785]support spring boot auto configure and remove component scan
(#3684)
---
.../common/rest/CommonRestConfiguration.java | 80 ++++++++++++++++++++++
.../common/rest/codec/query/QueryCodecCsv.java | 3 -
.../common/rest/codec/query/QueryCodecJson.java | 2 -
.../common/rest/codec/query/QueryCodecMulti.java | 2 -
.../common/rest/codec/query/QueryCodecPipes.java | 3 -
.../common/rest/codec/query/QueryCodecSsv.java | 3 -
.../common/rest/codec/query/QueryCodecTsv.java | 3 -
.../common/rest/codec/query/QueryCodecs.java | 2 -
.../common/rest/codec/query/QueryCodecsUtils.java | 3 -
.../rest/filter/inner/RestServerCodecFilter.java | 2 -
.../src/main/resources/META-INF/spring.factories | 18 +++++
.../servicecomb/edge/core/EdgeAddHeaderFilter.java | 2 -
.../servicecomb/edge/core/EdgeBootListener.java | 2 -
.../edge/core/EdgeCoreConfiguration.java | 24 ++++---
.../edge/core/EdgeServerCodecFilter.java | 2 -
.../src/main/resources/META-INF/spring.factories | 18 +++++
...ion.java => GovernanceCommonConfiguration.java} | 2 +-
...Matcher.java => RouterCommonConfiguration.java} | 37 +++++-----
.../apache/servicecomb/router/RouterFilter.java | 4 --
.../servicecomb/router/cache/RouterRuleCache.java | 4 --
.../router/match/RouterRuleMatcher.java | 4 --
.../src/main/resources/META-INF/spring.factories | 19 +++++
.../governance/BulkheadHandlerTest.java | 2 +-
.../servicecomb/governance/CustomMatchTest.java | 2 +-
.../servicecomb/governance/FaultInjectionTest.java | 2 +-
.../servicecomb/governance/FlowControlTest.java | 2 +-
.../governance/GovernanceCacheHandlerTest.java | 2 +-
.../governance/GovernancePropertiesTest.java | 2 +-
.../IdentifierRateLimitingHandlerTest.java | 2 +-
.../governance/InstanceBulkheadHandlerTest.java | 2 +-
.../governance/InstanceIsolationTest.java | 2 +-
.../servicecomb/governance/LoadBalancerTest.java | 2 +-
.../apache/servicecomb/governance/MapperTest.java | 2 +-
.../servicecomb/governance/OperatorTest.java | 2 +-
.../governance/TimeLimiterHandlerTest.java | 2 +-
35 files changed, 182 insertions(+), 83 deletions(-)
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/CommonRestConfiguration.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/CommonRestConfiguration.java
new file mode 100644
index 000000000..a52954190
--- /dev/null
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/CommonRestConfiguration.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.servicecomb.common.rest;
+
+import java.util.List;
+
+import org.apache.servicecomb.common.rest.codec.query.QueryCodec;
+import org.apache.servicecomb.common.rest.codec.query.QueryCodecCsv;
+import org.apache.servicecomb.common.rest.codec.query.QueryCodecJson;
+import org.apache.servicecomb.common.rest.codec.query.QueryCodecMulti;
+import org.apache.servicecomb.common.rest.codec.query.QueryCodecPipes;
+import org.apache.servicecomb.common.rest.codec.query.QueryCodecSsv;
+import org.apache.servicecomb.common.rest.codec.query.QueryCodecTsv;
+import org.apache.servicecomb.common.rest.codec.query.QueryCodecs;
+import org.apache.servicecomb.common.rest.codec.query.QueryCodecsUtils;
+import org.apache.servicecomb.common.rest.filter.inner.RestServerCodecFilter;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class CommonRestConfiguration {
+ @Bean
+ public QueryCodecCsv queryCodecCsv() {
+ return new QueryCodecCsv();
+ }
+
+ @Bean
+ public QueryCodecTsv queryCodecTsv() {
+ return new QueryCodecTsv();
+ }
+
+ @Bean
+ public QueryCodecSsv queryCodecSsv() {
+ return new QueryCodecSsv();
+ }
+
+ @Bean
+ public QueryCodecPipes queryCodecPipes() {
+ return new QueryCodecPipes();
+ }
+
+ @Bean
+ public QueryCodecMulti queryCodecMulti() {
+ return new QueryCodecMulti();
+ }
+
+ @Bean
+ public QueryCodecJson queryCodecJson() {
+ return new QueryCodecJson();
+ }
+
+ @Bean
+ public QueryCodecsUtils queryCodecsUtils(QueryCodecs queryCodecs) {
+ return new QueryCodecsUtils(queryCodecs);
+ }
+
+ @Bean
+ public RestServerCodecFilter restServerCodecFilter() {
+ return new RestServerCodecFilter();
+ }
+
+ @Bean
+ public QueryCodecs queryCodecs(List<QueryCodec> orderedCodecs) {
+ return new QueryCodecs(orderedCodecs);
+ }
+}
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecCsv.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecCsv.java
index 706835b53..12e1a6351 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecCsv.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecCsv.java
@@ -16,9 +16,6 @@
*/
package org.apache.servicecomb.common.rest.codec.query;
-import org.springframework.stereotype.Component;
-
-@Component
public class QueryCodecCsv extends QueryCodecWithDelimiter {
public static final String CODEC_NAME = "csv";
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecJson.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecJson.java
index ccf489273..d46c28e2f 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecJson.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecJson.java
@@ -25,13 +25,11 @@ import
org.apache.servicecomb.common.rest.codec.param.QueryProcessorCreator.Quer
import
org.apache.servicecomb.common.rest.definition.path.URLPathBuilder.URLPathStringBuilder;
import org.apache.servicecomb.core.exception.ExceptionCodes;
import org.apache.servicecomb.core.exception.Exceptions;
-import org.springframework.stereotype.Component;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
-@Component
public class QueryCodecJson implements QueryCodec {
public static final String CODEC_NAME = "json";
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecMulti.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecMulti.java
index 2a0c19163..49db89b53 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecMulti.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecMulti.java
@@ -23,9 +23,7 @@ import javax.servlet.http.HttpServletRequest;
import
org.apache.servicecomb.common.rest.codec.param.QueryProcessorCreator.QueryProcessor;
import
org.apache.servicecomb.common.rest.definition.path.URLPathBuilder.URLPathStringBuilder;
-import org.springframework.stereotype.Component;
-@Component
public class QueryCodecMulti extends AbstractQueryCodec {
public static final String CODEC_NAME = "multi";
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecPipes.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecPipes.java
index 2a5160d3a..cf679bca0 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecPipes.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecPipes.java
@@ -16,9 +16,6 @@
*/
package org.apache.servicecomb.common.rest.codec.query;
-import org.springframework.stereotype.Component;
-
-@Component
public class QueryCodecPipes extends QueryCodecWithDelimiter {
public static final String CODEC_NAME = "pipes";
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecSsv.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecSsv.java
index 5c230d0cd..c2e56ff72 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecSsv.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecSsv.java
@@ -16,9 +16,6 @@
*/
package org.apache.servicecomb.common.rest.codec.query;
-import org.springframework.stereotype.Component;
-
-@Component
public class QueryCodecSsv extends QueryCodecWithDelimiter {
public static final String CODEC_NAME = "ssv";
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecTsv.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecTsv.java
index ee834f8b2..34558d944 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecTsv.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecTsv.java
@@ -16,9 +16,6 @@
*/
package org.apache.servicecomb.common.rest.codec.query;
-import org.springframework.stereotype.Component;
-
-@Component
public class QueryCodecTsv extends QueryCodecWithDelimiter {
public static final String CODEC_NAME = "tsv";
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecs.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecs.java
index 6be3c775b..7ab2c1603 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecs.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecs.java
@@ -26,9 +26,7 @@ import javax.annotation.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-@Component
public class QueryCodecs {
private static final Logger LOGGER =
LoggerFactory.getLogger(QueryCodecs.class);
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecsUtils.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecsUtils.java
index d66a6d84c..f4aa30d44 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecsUtils.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecsUtils.java
@@ -19,9 +19,6 @@ package org.apache.servicecomb.common.rest.codec.query;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.springframework.stereotype.Component;
-
-@Component
public class QueryCodecsUtils {
// create a default instance, so that more friendly to UT
private static QueryCodecs queryCodecs = QueryCodecs.createForTest();
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
index 4d101e9ff..4045ba9cc 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
+++
b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
@@ -45,12 +45,10 @@ import
org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
import org.apache.servicecomb.foundation.vertx.stream.BufferOutputStream;
import org.apache.servicecomb.swagger.invocation.InvocationType;
import org.apache.servicecomb.swagger.invocation.Response;
-import org.springframework.stereotype.Component;
import io.netty.buffer.Unpooled;
import io.vertx.core.MultiMap;
-@Component
public class RestServerCodecFilter implements ProducerFilter {
public static final String NAME = "rest-server-codec";
diff --git a/common/common-rest/src/main/resources/META-INF/spring.factories
b/common/common-rest/src/main/resources/META-INF/spring.factories
new file mode 100644
index 000000000..ce480f632
--- /dev/null
+++ b/common/common-rest/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ org.apache.servicecomb.common.rest.CommonRestConfiguration
diff --git
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
index 1d88a7c67..8962ed181 100644
---
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
+++
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
@@ -27,9 +27,7 @@ import org.apache.servicecomb.core.filter.FilterNode;
import org.apache.servicecomb.swagger.invocation.InvocationType;
import org.apache.servicecomb.swagger.invocation.Response;
import org.apache.servicecomb.transport.rest.client.RestClientTransportContext;
-import org.springframework.stereotype.Component;
-@Component
public class EdgeAddHeaderFilter implements ConsumerFilter {
public static final String NAME = "edge-add-headers";
diff --git
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeBootListener.java
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeBootListener.java
index 55ee39261..c4a5ff4c6 100644
---
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeBootListener.java
+++
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeBootListener.java
@@ -24,11 +24,9 @@ import
org.apache.servicecomb.transport.rest.client.TransportClientConfig;
import org.apache.servicecomb.transport.rest.vertx.TransportConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
import com.netflix.config.DynamicPropertyFactory;
-@Component
public class EdgeBootListener implements BootListener {
private static final Logger LOGGER =
LoggerFactory.getLogger(EdgeBootListener.class);
diff --git
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecCsv.java
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeCoreConfiguration.java
similarity index 61%
copy from
common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecCsv.java
copy to
edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeCoreConfiguration.java
index 706835b53..e6cb427ee 100644
---
a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/codec/query/QueryCodecCsv.java
+++
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeCoreConfiguration.java
@@ -14,17 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.servicecomb.common.rest.codec.query;
+package org.apache.servicecomb.edge.core;
-import org.springframework.stereotype.Component;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
-@Component
-public class QueryCodecCsv extends QueryCodecWithDelimiter {
- public static final String CODEC_NAME = "csv";
+@Configuration
+public class EdgeCoreConfiguration {
+ @Bean
+ public EdgeBootListener edgeBootListener() {
+ return new EdgeBootListener();
+ }
- public static final String DELIMITER = ",";
+ @Bean
+ public EdgeServerCodecFilter edgeServerCodecFilter() {
+ return new EdgeServerCodecFilter();
+ }
- public QueryCodecCsv() {
- super(CODEC_NAME, DELIMITER, DELIMITER);
+ @Bean
+ public EdgeAddHeaderFilter edgeAddHeaderFilter() {
+ return new EdgeAddHeaderFilter();
}
}
diff --git
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
index 54b2759ad..c6b01d614 100644
---
a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
+++
b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
@@ -27,9 +27,7 @@ import org.apache.servicecomb.core.filter.FilterNode;
import org.apache.servicecomb.swagger.invocation.InvocationType;
import org.apache.servicecomb.swagger.invocation.Response;
import org.apache.servicecomb.swagger.invocation.context.TransportContext;
-import org.springframework.stereotype.Component;
-@Component
public class EdgeServerCodecFilter extends RestServerCodecFilter {
public static final String NAME = "edge-server-codec";
diff --git a/edge/edge-core/src/main/resources/META-INF/spring.factories
b/edge/edge-core/src/main/resources/META-INF/spring.factories
new file mode 100644
index 000000000..c927186a4
--- /dev/null
+++ b/edge/edge-core/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ org.apache.servicecomb.edge.core.EdgeCoreConfiguration
diff --git
a/governance/src/main/java/org/apache/servicecomb/governance/GovernanceConfiguration.java
b/governance/src/main/java/org/apache/servicecomb/governance/GovernanceCommonConfiguration.java
similarity index 99%
rename from
governance/src/main/java/org/apache/servicecomb/governance/GovernanceConfiguration.java
rename to
governance/src/main/java/org/apache/servicecomb/governance/GovernanceCommonConfiguration.java
index 2b06b2172..bd3929ad6 100644
---
a/governance/src/main/java/org/apache/servicecomb/governance/GovernanceConfiguration.java
+++
b/governance/src/main/java/org/apache/servicecomb/governance/GovernanceCommonConfiguration.java
@@ -63,7 +63,7 @@ import org.springframework.context.annotation.Configuration;
import io.micrometer.core.instrument.MeterRegistry;
@Configuration
-public class GovernanceConfiguration {
+public class GovernanceCommonConfiguration {
// properties configuration
@Bean
public BulkheadProperties bulkheadProperties() {
diff --git
a/governance/src/main/java/org/apache/servicecomb/router/match/RouterRuleMatcher.java
b/governance/src/main/java/org/apache/servicecomb/router/RouterCommonConfiguration.java
similarity index 52%
copy from
governance/src/main/java/org/apache/servicecomb/router/match/RouterRuleMatcher.java
copy to
governance/src/main/java/org/apache/servicecomb/router/RouterCommonConfiguration.java
index a47da12bd..4b11c5481 100644
---
a/governance/src/main/java/org/apache/servicecomb/router/match/RouterRuleMatcher.java
+++
b/governance/src/main/java/org/apache/servicecomb/router/RouterCommonConfiguration.java
@@ -14,31 +14,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.servicecomb.router.match;
-
-import java.util.Map;
+package org.apache.servicecomb.router;
import org.apache.servicecomb.router.cache.RouterRuleCache;
-import org.apache.servicecomb.router.model.PolicyRuleItem;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
+import org.apache.servicecomb.router.match.RouterRuleMatcher;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
-@Component
-public class RouterRuleMatcher {
- private final RouterRuleCache routerRuleCache;
+@Configuration
+public class RouterCommonConfiguration {
+ @Bean
+ public RouterRuleCache routerRuleCache(Environment environment) {
+ return new RouterRuleCache(environment);
+ }
- @Autowired
- public RouterRuleMatcher(RouterRuleCache routerRuleCache) {
- this.routerRuleCache = routerRuleCache;
+ @Bean
+ public RouterRuleMatcher routerRuleMatcher(RouterRuleCache routerRuleCache) {
+ return new RouterRuleMatcher(routerRuleCache);
}
- public PolicyRuleItem match(String serviceName, Map<String, String>
invokeHeader) {
- for (PolicyRuleItem rule :
routerRuleCache.getServiceInfoCacheMap().get(serviceName)
- .getAllrule()) {
- if (rule.getMatch() == null || rule.getMatch().match(invokeHeader)) {
- return rule;
- }
- }
- return null;
+ @Bean
+ public RouterFilter routerFilter(RouterRuleMatcher routerRuleMatcher,
RouterRuleCache routerRuleCache) {
+ return new RouterFilter(routerRuleMatcher, routerRuleCache);
}
}
diff --git
a/governance/src/main/java/org/apache/servicecomb/router/RouterFilter.java
b/governance/src/main/java/org/apache/servicecomb/router/RouterFilter.java
index 7e48b9c00..a6ec35d76 100644
--- a/governance/src/main/java/org/apache/servicecomb/router/RouterFilter.java
+++ b/governance/src/main/java/org/apache/servicecomb/router/RouterFilter.java
@@ -26,11 +26,8 @@ import org.apache.servicecomb.router.match.RouterRuleMatcher;
import org.apache.servicecomb.router.model.PolicyRuleItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
-@Component
public class RouterFilter {
private static final Logger LOGGER =
LoggerFactory.getLogger(RouterFilter.class);
@@ -39,7 +36,6 @@ public class RouterFilter {
private final RouterRuleCache routerRuleCache;
- @Autowired
public RouterFilter(RouterRuleMatcher routerRuleMatcher, RouterRuleCache
routerRuleCache) {
this.routerRuleMatcher = routerRuleMatcher;
this.routerRuleCache = routerRuleCache;
diff --git
a/governance/src/main/java/org/apache/servicecomb/router/cache/RouterRuleCache.java
b/governance/src/main/java/org/apache/servicecomb/router/cache/RouterRuleCache.java
index 8ff480cea..018d48ec5 100644
---
a/governance/src/main/java/org/apache/servicecomb/router/cache/RouterRuleCache.java
+++
b/governance/src/main/java/org/apache/servicecomb/router/cache/RouterRuleCache.java
@@ -27,9 +27,7 @@ import org.apache.servicecomb.router.model.PolicyRuleItem;
import org.apache.servicecomb.router.model.ServiceInfoCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
-import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.LoaderOptions;
@@ -41,7 +39,6 @@ import org.yaml.snakeyaml.representer.Representer;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.eventbus.Subscribe;
-@Component
public class RouterRuleCache {
private static final Logger LOGGER =
LoggerFactory.getLogger(RouterRuleCache.class);
@@ -57,7 +54,6 @@ public class RouterRuleCache {
private final Representer representer = new Representer(new DumperOptions());
- @Autowired
public RouterRuleCache(Environment environment) {
this.environment = environment;
representer.getPropertyUtils().setSkipMissingProperties(true);
diff --git
a/governance/src/main/java/org/apache/servicecomb/router/match/RouterRuleMatcher.java
b/governance/src/main/java/org/apache/servicecomb/router/match/RouterRuleMatcher.java
index a47da12bd..a7fcb0f28 100644
---
a/governance/src/main/java/org/apache/servicecomb/router/match/RouterRuleMatcher.java
+++
b/governance/src/main/java/org/apache/servicecomb/router/match/RouterRuleMatcher.java
@@ -20,14 +20,10 @@ import java.util.Map;
import org.apache.servicecomb.router.cache.RouterRuleCache;
import org.apache.servicecomb.router.model.PolicyRuleItem;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-@Component
public class RouterRuleMatcher {
private final RouterRuleCache routerRuleCache;
- @Autowired
public RouterRuleMatcher(RouterRuleCache routerRuleCache) {
this.routerRuleCache = routerRuleCache;
}
diff --git a/governance/src/main/resources/META-INF/spring.factories
b/governance/src/main/resources/META-INF/spring.factories
new file mode 100644
index 000000000..2a3f4f6e7
--- /dev/null
+++ b/governance/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+ org.apache.servicecomb.governance.GovernanceCommonConfiguration,\
+ org.apache.servicecomb.router.RouterCommonConfiguration
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/BulkheadHandlerTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/BulkheadHandlerTest.java
index a5d429cc4..4e77fa900 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/BulkheadHandlerTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/BulkheadHandlerTest.java
@@ -27,7 +27,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class BulkheadHandlerTest {
private BulkheadHandler bulkheadHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/CustomMatchTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/CustomMatchTest.java
index 126db5766..92890baa6 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/CustomMatchTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/CustomMatchTest.java
@@ -30,7 +30,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.junit.jupiter.api.Assertions;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class, MockConfigurationForCustomMatcher.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class, MockConfigurationForCustomMatcher.class})
public class CustomMatchTest {
private RequestProcessor requestProcessor;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/FaultInjectionTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/FaultInjectionTest.java
index ce343ff26..919f260d0 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/FaultInjectionTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/FaultInjectionTest.java
@@ -35,7 +35,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class FaultInjectionTest {
private FaultInjectionHandler faultInjectionHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/FlowControlTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/FlowControlTest.java
index c649e21cf..a4b751fd9 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/FlowControlTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/FlowControlTest.java
@@ -35,7 +35,7 @@ import io.github.resilience4j.ratelimiter.RateLimiter;
import io.github.resilience4j.ratelimiter.RequestNotPermitted;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class FlowControlTest {
private RateLimitingHandler rateLimitingHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/GovernanceCacheHandlerTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/GovernanceCacheHandlerTest.java
index 38ad5e199..ac26c3f3b 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/GovernanceCacheHandlerTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/GovernanceCacheHandlerTest.java
@@ -28,7 +28,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class GovernanceCacheHandlerTest {
private GovernanceCacheHandler<String, Object> governanceCacheHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
index d24329956..4f12dec62 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
@@ -59,7 +59,7 @@ import org.springframework.core.env.Environment;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class GovernancePropertiesTest {
private List<GovernanceProperties<? extends AbstractPolicy>> propertiesList;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/IdentifierRateLimitingHandlerTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/IdentifierRateLimitingHandlerTest.java
index 288aa7bbb..1aed8e4a3 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/IdentifierRateLimitingHandlerTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/IdentifierRateLimitingHandlerTest.java
@@ -37,7 +37,7 @@ import io.github.resilience4j.ratelimiter.RateLimiter;
import io.github.resilience4j.ratelimiter.RequestNotPermitted;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class IdentifierRateLimitingHandlerTest {
private IdentifierRateLimitingHandler rateLimitingHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/InstanceBulkheadHandlerTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/InstanceBulkheadHandlerTest.java
index f815db3e2..de5213ef5 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/InstanceBulkheadHandlerTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/InstanceBulkheadHandlerTest.java
@@ -37,7 +37,7 @@ import io.github.resilience4j.decorators.Decorators;
import io.github.resilience4j.decorators.Decorators.DecorateCheckedSupplier;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class InstanceBulkheadHandlerTest {
private InstanceBulkheadHandler instanceBulkheadHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/InstanceIsolationTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/InstanceIsolationTest.java
index d8a7e7299..1ee952780 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/InstanceIsolationTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/InstanceIsolationTest.java
@@ -36,7 +36,7 @@ import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.prometheus.PrometheusMeterRegistry;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class InstanceIsolationTest {
private InstanceIsolationHandler instanceIsolationHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/LoadBalancerTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/LoadBalancerTest.java
index 2a5fb0645..9973cbc56 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/LoadBalancerTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/LoadBalancerTest.java
@@ -27,7 +27,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class LoadBalancerTest {
private LoadBalanceHandler loadBalanceHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/MapperTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/MapperTest.java
index 222af7f0e..176e25030 100644
--- a/governance/src/test/java/org/apache/servicecomb/governance/MapperTest.java
+++ b/governance/src/test/java/org/apache/servicecomb/governance/MapperTest.java
@@ -28,7 +28,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class MapperTest {
private MapperHandler mapperHandler;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/OperatorTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/OperatorTest.java
index 25a8490d4..7c0670acb 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/OperatorTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/OperatorTest.java
@@ -34,7 +34,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class OperatorTest {
private RequestProcessor requestProcessor;
diff --git
a/governance/src/test/java/org/apache/servicecomb/governance/TimeLimiterHandlerTest.java
b/governance/src/test/java/org/apache/servicecomb/governance/TimeLimiterHandlerTest.java
index dbefeba6b..742c71184 100644
---
a/governance/src/test/java/org/apache/servicecomb/governance/TimeLimiterHandlerTest.java
+++
b/governance/src/test/java/org/apache/servicecomb/governance/TimeLimiterHandlerTest.java
@@ -30,7 +30,7 @@ import org.springframework.test.context.ContextConfiguration;
import io.github.resilience4j.timelimiter.TimeLimiter;
@SpringBootTest
-@ContextConfiguration(classes = {GovernanceConfiguration.class,
MockConfiguration.class})
+@ContextConfiguration(classes = {GovernanceCommonConfiguration.class,
MockConfiguration.class})
public class TimeLimiterHandlerTest {
private TimeLimiterHandler timeLimiterHandler;