Commit 0ed0cb6a by Nepxion

重构类结构

parent 9744aa1a
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>discovery-plugin-framework</artifactId> <artifactId>discovery-plugin-strategy</artifactId>
</dependency> </dependency>
<dependency> <dependency>
......
package com.nepxion.discovery.plugin.strategy.extension.aop; package com.nepxion.discovery.plugin.strategy.extension.service.aop;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
...@@ -17,22 +17,22 @@ import com.nepxion.matrix.proxy.aop.DefaultAutoScanProxy; ...@@ -17,22 +17,22 @@ import com.nepxion.matrix.proxy.aop.DefaultAutoScanProxy;
import com.nepxion.matrix.proxy.mode.ProxyMode; import com.nepxion.matrix.proxy.mode.ProxyMode;
import com.nepxion.matrix.proxy.mode.ScanMode; import com.nepxion.matrix.proxy.mode.ScanMode;
public class StrategyAutoScanProxy extends DefaultAutoScanProxy { public class ServiceStrategyAutoScanProxy extends DefaultAutoScanProxy {
private static final long serialVersionUID = 6503834158946539913L; private static final long serialVersionUID = 8436914718400274011L;
private String[] commonInterceptorNames; private String[] commonInterceptorNames;
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private Class[] methodAnnotations; private Class[] methodAnnotations;
public StrategyAutoScanProxy(String scanPackages) { public ServiceStrategyAutoScanProxy(String scanPackages) {
super(scanPackages, ProxyMode.BY_CLASS_ANNOTATION_ONLY, ScanMode.FOR_CLASS_ANNOTATION_ONLY); super(scanPackages, ProxyMode.BY_CLASS_ANNOTATION_ONLY, ScanMode.FOR_CLASS_ANNOTATION_ONLY);
} }
@Override @Override
protected String[] getCommonInterceptorNames() { protected String[] getCommonInterceptorNames() {
if (commonInterceptorNames == null) { if (commonInterceptorNames == null) {
commonInterceptorNames = new String[] { "strategyInterceptor" }; commonInterceptorNames = new String[] { "serviceStrategyInterceptor" };
} }
return commonInterceptorNames; return commonInterceptorNames;
......
package com.nepxion.discovery.plugin.strategy.extension.aop; package com.nepxion.discovery.plugin.strategy.extension.service.aop;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
...@@ -17,13 +17,13 @@ import org.apache.commons.lang3.ArrayUtils; ...@@ -17,13 +17,13 @@ import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.nepxion.discovery.plugin.strategy.extension.constant.StrategyConstant; import com.nepxion.discovery.plugin.strategy.extension.service.constant.ServiceStrategyConstant;
import com.nepxion.discovery.plugin.strategy.extension.context.StrategyContext; import com.nepxion.discovery.plugin.strategy.extension.service.context.ServiceStrategyContext;
import com.nepxion.discovery.plugin.strategy.extension.context.StrategyContextHolder; import com.nepxion.discovery.plugin.strategy.extension.service.context.ServiceStrategyContextHolder;
import com.nepxion.matrix.proxy.aop.AbstractInterceptor; import com.nepxion.matrix.proxy.aop.AbstractInterceptor;
public class StrategyInterceptor extends AbstractInterceptor { public class ServiceStrategyInterceptor extends AbstractInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(StrategyInterceptor.class); private static final Logger LOG = LoggerFactory.getLogger(ServiceStrategyInterceptor.class);
@Override @Override
public Object invoke(MethodInvocation invocation) throws Throwable { public Object invoke(MethodInvocation invocation) throws Throwable {
...@@ -47,12 +47,12 @@ public class StrategyInterceptor extends AbstractInterceptor { ...@@ -47,12 +47,12 @@ public class StrategyInterceptor extends AbstractInterceptor {
} }
} }
LOG.debug("Context is set with class={}, methodName={}, parameterMap={}", proxiedClass, methodName, parameterMap); ServiceStrategyContext context = ServiceStrategyContextHolder.currentContext();
context.add(ServiceStrategyConstant.CLASS, proxiedClass);
context.add(ServiceStrategyConstant.METHOD, methodName);
context.add(ServiceStrategyConstant.PARAMETER_MAP, parameterMap);
StrategyContext context = StrategyContextHolder.currentContext(); LOG.debug("Service strategy context is set with class={}, methodName={}, parameterMap={}", proxiedClass, methodName, parameterMap);
context.add(StrategyConstant.CLASS, proxiedClass);
context.add(StrategyConstant.METHOD, methodName);
context.add(StrategyConstant.PARAMETER_MAP, parameterMap);
try { try {
return invocation.proceed(); return invocation.proceed();
......
package com.nepxion.discovery.plugin.strategy.extension.service.configuration;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.nepxion.discovery.plugin.strategy.constant.StrategyConstant;
import com.nepxion.discovery.plugin.strategy.extension.service.aop.ServiceStrategyAutoScanProxy;
import com.nepxion.discovery.plugin.strategy.extension.service.aop.ServiceStrategyInterceptor;
import com.nepxion.discovery.plugin.strategy.extension.service.constant.ServiceStrategyConstant;
@Configuration
@AutoConfigureBefore(RibbonClientConfiguration.class)
@ConditionalOnProperty(value = StrategyConstant.SPRING_APPLICATION_STRATEGY_CONTROL_ENABLED, matchIfMissing = true)
public class ServiceStrategyAutoConfiguration {
@Value("${" + ServiceStrategyConstant.SPRING_APPLICATION_STRATEGY_SCAN_PACKAGES + ":}")
private String scanPackages;
@Bean
@ConditionalOnProperty(value = ServiceStrategyConstant.SPRING_APPLICATION_STRATEGY_BUSINESS_CONTEXT_CONTROL_ENABLED, matchIfMissing = true)
public ServiceStrategyAutoScanProxy serviceStrategyAutoScanProxy() {
return new ServiceStrategyAutoScanProxy(scanPackages);
}
@Bean
@ConditionalOnProperty(value = ServiceStrategyConstant.SPRING_APPLICATION_STRATEGY_BUSINESS_CONTEXT_CONTROL_ENABLED, matchIfMissing = true)
public ServiceStrategyInterceptor serviceStrategyInterceptor() {
return new ServiceStrategyInterceptor();
}
}
\ No newline at end of file
package com.nepxion.discovery.plugin.strategy.extension.constant; package com.nepxion.discovery.plugin.strategy.extension.service.constant;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
...@@ -9,11 +9,9 @@ package com.nepxion.discovery.plugin.strategy.extension.constant; ...@@ -9,11 +9,9 @@ package com.nepxion.discovery.plugin.strategy.extension.constant;
* @version 1.0 * @version 1.0
*/ */
public class StrategyConstant { public class ServiceStrategyConstant {
public static final String SPRING_APPLICATION_STRATEGY_CONTROL_ENABLED = "spring.application.strategy.control.enabled";
public static final String SPRING_APPLICATION_STRATEGY_BUSINESS_CONTEXT_CONTROL_ENABLED = "spring.application.strategy.business.context.control.enabled"; public static final String SPRING_APPLICATION_STRATEGY_BUSINESS_CONTEXT_CONTROL_ENABLED = "spring.application.strategy.business.context.control.enabled";
public static final String SPRING_APPLICATION_STRATEGY_SCAN_PACKAGES = "spring.application.strategy.scan.packages"; public static final String SPRING_APPLICATION_STRATEGY_SCAN_PACKAGES = "spring.application.strategy.scan.packages";
public static final String CLASS = "class"; public static final String CLASS = "class";
public static final String METHOD = "method"; public static final String METHOD = "method";
public static final String PARAMETER_MAP = "parameterMap"; public static final String PARAMETER_MAP = "parameterMap";
......
package com.nepxion.discovery.plugin.strategy.extension.context; package com.nepxion.discovery.plugin.strategy.extension.service.context;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
...@@ -18,10 +18,10 @@ import org.apache.commons.lang3.builder.HashCodeBuilder; ...@@ -18,10 +18,10 @@ import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
public class StrategyContext { public class ServiceStrategyContext {
private final Map<String, Object> attributes = new LinkedHashMap<String, Object>(); private final Map<String, Object> attributes = new LinkedHashMap<String, Object>();
public StrategyContext add(String key, Object value) { public ServiceStrategyContext add(String key, Object value) {
attributes.put(key, value); attributes.put(key, value);
return this; return this;
...@@ -31,13 +31,13 @@ public class StrategyContext { ...@@ -31,13 +31,13 @@ public class StrategyContext {
return attributes.get(key); return attributes.get(key);
} }
public StrategyContext remove(String key) { public ServiceStrategyContext remove(String key) {
attributes.remove(key); attributes.remove(key);
return this; return this;
} }
public StrategyContext clear() { public ServiceStrategyContext clear() {
attributes.clear(); attributes.clear();
return this; return this;
......
package com.nepxion.discovery.plugin.strategy.extension.context; package com.nepxion.discovery.plugin.strategy.extension.service.context;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
...@@ -9,15 +9,15 @@ package com.nepxion.discovery.plugin.strategy.extension.context; ...@@ -9,15 +9,15 @@ package com.nepxion.discovery.plugin.strategy.extension.context;
* @version 1.0 * @version 1.0
*/ */
public class StrategyContextHolder { public class ServiceStrategyContextHolder {
private static final ThreadLocal<StrategyContext> HOLDER = new InheritableThreadLocal<StrategyContext>() { private static final ThreadLocal<ServiceStrategyContext> HOLDER = new InheritableThreadLocal<ServiceStrategyContext>() {
@Override @Override
protected StrategyContext initialValue() { protected ServiceStrategyContext initialValue() {
return new StrategyContext(); return new ServiceStrategyContext();
} }
}; };
public static StrategyContext currentContext() { public static ServiceStrategyContext currentContext() {
return HOLDER.get(); return HOLDER.get();
} }
......
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.nepxion.discovery.plugin.strategy.extension.configuration.StrategyAutoConfiguration com.nepxion.discovery.plugin.strategy.configuration.StrategyAutoConfiguration,\
\ No newline at end of file com.nepxion.discovery.plugin.strategy.extension.service.configuration.ServiceStrategyAutoConfiguration
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<artifactId>discovery-plugin-strategy</artifactId>
<name>Nepxion Discovery Plugin Strategy</name>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<description>Nepxion Discovery is an enhancement for Spring Cloud Discovery</description>
<url>http://www.nepxion.com</url>
<parent>
<groupId>com.nepxion</groupId>
<artifactId>discovery</artifactId>
<version>4.1.9</version>
</parent>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>discovery-plugin-framework</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.nepxion.discovery.plugin.strategy.extension.configuration; package com.nepxion.discovery.plugin.strategy.configuration;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
...@@ -10,7 +10,6 @@ package com.nepxion.discovery.plugin.strategy.extension.configuration; ...@@ -10,7 +10,6 @@ package com.nepxion.discovery.plugin.strategy.extension.configuration;
*/ */
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
...@@ -18,20 +17,15 @@ import org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration; ...@@ -18,20 +17,15 @@ import org.springframework.cloud.netflix.ribbon.RibbonClientConfiguration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import com.nepxion.discovery.plugin.strategy.extension.aop.StrategyAutoScanProxy; import com.nepxion.discovery.plugin.strategy.constant.StrategyConstant;
import com.nepxion.discovery.plugin.strategy.extension.aop.StrategyInterceptor; import com.nepxion.discovery.plugin.strategy.discovery.DiscoveryEnabledAdapter;
import com.nepxion.discovery.plugin.strategy.extension.constant.StrategyConstant; import com.nepxion.discovery.plugin.strategy.discovery.DiscoveryEnabledPredicate;
import com.nepxion.discovery.plugin.strategy.extension.enable.DiscoveryEnabledAdapter; import com.nepxion.discovery.plugin.strategy.discovery.DiscoveryEnabledRule;
import com.nepxion.discovery.plugin.strategy.extension.enable.DiscoveryEnabledPredicate;
import com.nepxion.discovery.plugin.strategy.extension.enable.DiscoveryEnabledRule;
@Configuration @Configuration
@AutoConfigureBefore(RibbonClientConfiguration.class) @AutoConfigureBefore(RibbonClientConfiguration.class)
@ConditionalOnProperty(value = StrategyConstant.SPRING_APPLICATION_STRATEGY_CONTROL_ENABLED, matchIfMissing = true) @ConditionalOnProperty(value = StrategyConstant.SPRING_APPLICATION_STRATEGY_CONTROL_ENABLED, matchIfMissing = true)
public class StrategyAutoConfiguration { public class StrategyAutoConfiguration {
@Value("${" + StrategyConstant.SPRING_APPLICATION_STRATEGY_SCAN_PACKAGES + ":}")
private String scanPackages;
@Autowired @Autowired
private DiscoveryEnabledAdapter discoveryEnabledAdapter; private DiscoveryEnabledAdapter discoveryEnabledAdapter;
...@@ -45,16 +39,4 @@ public class StrategyAutoConfiguration { ...@@ -45,16 +39,4 @@ public class StrategyAutoConfiguration {
return discoveryEnabledRule; return discoveryEnabledRule;
} }
@Bean
@ConditionalOnProperty(value = StrategyConstant.SPRING_APPLICATION_STRATEGY_BUSINESS_CONTEXT_CONTROL_ENABLED, matchIfMissing = true)
public StrategyAutoScanProxy strategyAutoScanProxy() {
return new StrategyAutoScanProxy(scanPackages);
}
@Bean
@ConditionalOnProperty(value = StrategyConstant.SPRING_APPLICATION_STRATEGY_BUSINESS_CONTEXT_CONTROL_ENABLED, matchIfMissing = true)
public StrategyInterceptor strategyInterceptor() {
return new StrategyInterceptor();
}
} }
\ No newline at end of file
package com.nepxion.discovery.plugin.strategy.constant;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
public class StrategyConstant {
public static final String SPRING_APPLICATION_STRATEGY_CONTROL_ENABLED = "spring.application.strategy.control.enabled";
}
\ No newline at end of file
package com.nepxion.discovery.plugin.strategy.extension.enable; package com.nepxion.discovery.plugin.strategy.discovery;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
...@@ -9,9 +9,8 @@ package com.nepxion.discovery.plugin.strategy.extension.enable; ...@@ -9,9 +9,8 @@ package com.nepxion.discovery.plugin.strategy.extension.enable;
* @version 1.0 * @version 1.0
*/ */
import com.nepxion.discovery.plugin.strategy.extension.context.StrategyContext;
import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.Server;
public interface DiscoveryEnabledAdapter { public interface DiscoveryEnabledAdapter {
boolean apply(Server server, StrategyContext context); boolean apply(Server server);
} }
\ No newline at end of file
package com.nepxion.discovery.plugin.strategy.extension.enable; package com.nepxion.discovery.plugin.strategy.discovery;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
...@@ -9,8 +9,6 @@ package com.nepxion.discovery.plugin.strategy.extension.enable; ...@@ -9,8 +9,6 @@ package com.nepxion.discovery.plugin.strategy.extension.enable;
* @version 1.0 * @version 1.0
*/ */
import com.nepxion.discovery.plugin.strategy.extension.context.StrategyContext;
import com.nepxion.discovery.plugin.strategy.extension.context.StrategyContextHolder;
import com.netflix.loadbalancer.AbstractServerPredicate; import com.netflix.loadbalancer.AbstractServerPredicate;
import com.netflix.loadbalancer.PredicateKey; import com.netflix.loadbalancer.PredicateKey;
import com.netflix.loadbalancer.Server; import com.netflix.loadbalancer.Server;
...@@ -24,9 +22,7 @@ public class DiscoveryEnabledPredicate extends AbstractServerPredicate { ...@@ -24,9 +22,7 @@ public class DiscoveryEnabledPredicate extends AbstractServerPredicate {
} }
protected boolean apply(Server server) { protected boolean apply(Server server) {
StrategyContext context = StrategyContextHolder.currentContext(); return discoveryEnabledAdapter.apply(server);
return discoveryEnabledAdapter.apply(server, context);
} }
public void setDiscoveryEnabledAdapter(DiscoveryEnabledAdapter discoveryEnabledAdapter) { public void setDiscoveryEnabledAdapter(DiscoveryEnabledAdapter discoveryEnabledAdapter) {
......
package com.nepxion.discovery.plugin.strategy.extension.enable; package com.nepxion.discovery.plugin.strategy.discovery;
/** /**
* <p>Title: Nepxion Discovery</p> * <p>Title: Nepxion Discovery</p>
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
<module>discovery-plugin-starter-eureka</module> <module>discovery-plugin-starter-eureka</module>
<module>discovery-plugin-starter-consul</module> <module>discovery-plugin-starter-consul</module>
<module>discovery-plugin-starter-zookeeper</module> <module>discovery-plugin-starter-zookeeper</module>
<module>discovery-plugin-strategy</module>
<module>discovery-plugin-strategy-extension-service</module> <module>discovery-plugin-strategy-extension-service</module>
<module>discovery-console</module> <module>discovery-console</module>
<module>discovery-console-extension-nacos</module> <module>discovery-console-extension-nacos</module>
...@@ -120,6 +121,12 @@ ...@@ -120,6 +121,12 @@
<dependency> <dependency>
<groupId>${project.groupId}</groupId> <groupId>${project.groupId}</groupId>
<artifactId>discovery-plugin-strategy</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>discovery-plugin-strategy-extension-service</artifactId> <artifactId>discovery-plugin-strategy-extension-service</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment