Commit 0ed0cb6a by Nepxion

重构类结构

parent 9744aa1a
......@@ -17,7 +17,7 @@
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>discovery-plugin-framework</artifactId>
<artifactId>discovery-plugin-strategy</artifactId>
</dependency>
<dependency>
......
package com.nepxion.discovery.plugin.strategy.extension.aop;
package com.nepxion.discovery.plugin.strategy.extension.service.aop;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -17,22 +17,22 @@ import com.nepxion.matrix.proxy.aop.DefaultAutoScanProxy;
import com.nepxion.matrix.proxy.mode.ProxyMode;
import com.nepxion.matrix.proxy.mode.ScanMode;
public class StrategyAutoScanProxy extends DefaultAutoScanProxy {
private static final long serialVersionUID = 6503834158946539913L;
public class ServiceStrategyAutoScanProxy extends DefaultAutoScanProxy {
private static final long serialVersionUID = 8436914718400274011L;
private String[] commonInterceptorNames;
@SuppressWarnings("rawtypes")
private Class[] methodAnnotations;
public StrategyAutoScanProxy(String scanPackages) {
public ServiceStrategyAutoScanProxy(String scanPackages) {
super(scanPackages, ProxyMode.BY_CLASS_ANNOTATION_ONLY, ScanMode.FOR_CLASS_ANNOTATION_ONLY);
}
@Override
protected String[] getCommonInterceptorNames() {
if (commonInterceptorNames == null) {
commonInterceptorNames = new String[] { "strategyInterceptor" };
commonInterceptorNames = new String[] { "serviceStrategyInterceptor" };
}
return commonInterceptorNames;
......
package com.nepxion.discovery.plugin.strategy.extension.aop;
package com.nepxion.discovery.plugin.strategy.extension.service.aop;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -17,13 +17,13 @@ import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.nepxion.discovery.plugin.strategy.extension.constant.StrategyConstant;
import com.nepxion.discovery.plugin.strategy.extension.context.StrategyContext;
import com.nepxion.discovery.plugin.strategy.extension.context.StrategyContextHolder;
import com.nepxion.discovery.plugin.strategy.extension.service.constant.ServiceStrategyConstant;
import com.nepxion.discovery.plugin.strategy.extension.service.context.ServiceStrategyContext;
import com.nepxion.discovery.plugin.strategy.extension.service.context.ServiceStrategyContextHolder;
import com.nepxion.matrix.proxy.aop.AbstractInterceptor;
public class StrategyInterceptor extends AbstractInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(StrategyInterceptor.class);
public class ServiceStrategyInterceptor extends AbstractInterceptor {
private static final Logger LOG = LoggerFactory.getLogger(ServiceStrategyInterceptor.class);
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
......@@ -47,13 +47,13 @@ public class StrategyInterceptor extends AbstractInterceptor {
}
}
LOG.debug("Context is set with class={}, methodName={}, parameterMap={}", proxiedClass, methodName, parameterMap);
StrategyContext context = StrategyContextHolder.currentContext();
context.add(StrategyConstant.CLASS, proxiedClass);
context.add(StrategyConstant.METHOD, methodName);
context.add(StrategyConstant.PARAMETER_MAP, parameterMap);
ServiceStrategyContext context = ServiceStrategyContextHolder.currentContext();
context.add(ServiceStrategyConstant.CLASS, proxiedClass);
context.add(ServiceStrategyConstant.METHOD, methodName);
context.add(ServiceStrategyConstant.PARAMETER_MAP, parameterMap);
LOG.debug("Service strategy context is set with class={}, methodName={}, parameterMap={}", proxiedClass, methodName, parameterMap);
try {
return invocation.proceed();
} catch (Exception e) {
......
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>
......@@ -9,11 +9,9 @@ package com.nepxion.discovery.plugin.strategy.extension.constant;
* @version 1.0
*/
public class StrategyConstant {
public static final String SPRING_APPLICATION_STRATEGY_CONTROL_ENABLED = "spring.application.strategy.control.enabled";
public class ServiceStrategyConstant {
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 CLASS = "class";
public static final String METHOD = "method";
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>
......@@ -18,10 +18,10 @@ import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
public class StrategyContext {
public class ServiceStrategyContext {
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);
return this;
......@@ -31,13 +31,13 @@ public class StrategyContext {
return attributes.get(key);
}
public StrategyContext remove(String key) {
public ServiceStrategyContext remove(String key) {
attributes.remove(key);
return this;
}
public StrategyContext clear() {
public ServiceStrategyContext clear() {
attributes.clear();
return this;
......
package com.nepxion.discovery.plugin.strategy.extension.context;
package com.nepxion.discovery.plugin.strategy.extension.service.context;
/**
* <p>Title: Nepxion Discovery</p>
......@@ -9,15 +9,15 @@ package com.nepxion.discovery.plugin.strategy.extension.context;
* @version 1.0
*/
public class StrategyContextHolder {
private static final ThreadLocal<StrategyContext> HOLDER = new InheritableThreadLocal<StrategyContext>() {
public class ServiceStrategyContextHolder {
private static final ThreadLocal<ServiceStrategyContext> HOLDER = new InheritableThreadLocal<ServiceStrategyContext>() {
@Override
protected StrategyContext initialValue() {
return new StrategyContext();
protected ServiceStrategyContext initialValue() {
return new ServiceStrategyContext();
}
};
public static StrategyContext currentContext() {
public static ServiceStrategyContext currentContext() {
return HOLDER.get();
}
......
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.nepxion.discovery.plugin.strategy.extension.configuration.StrategyAutoConfiguration
\ No newline at end of file
com.nepxion.discovery.plugin.strategy.configuration.StrategyAutoConfiguration,\
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>
......@@ -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.Value;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
......@@ -18,20 +17,15 @@ 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.extension.aop.StrategyAutoScanProxy;
import com.nepxion.discovery.plugin.strategy.extension.aop.StrategyInterceptor;
import com.nepxion.discovery.plugin.strategy.extension.constant.StrategyConstant;
import com.nepxion.discovery.plugin.strategy.extension.enable.DiscoveryEnabledAdapter;
import com.nepxion.discovery.plugin.strategy.extension.enable.DiscoveryEnabledPredicate;
import com.nepxion.discovery.plugin.strategy.extension.enable.DiscoveryEnabledRule;
import com.nepxion.discovery.plugin.strategy.constant.StrategyConstant;
import com.nepxion.discovery.plugin.strategy.discovery.DiscoveryEnabledAdapter;
import com.nepxion.discovery.plugin.strategy.discovery.DiscoveryEnabledPredicate;
import com.nepxion.discovery.plugin.strategy.discovery.DiscoveryEnabledRule;
@Configuration
@AutoConfigureBefore(RibbonClientConfiguration.class)
@ConditionalOnProperty(value = StrategyConstant.SPRING_APPLICATION_STRATEGY_CONTROL_ENABLED, matchIfMissing = true)
public class StrategyAutoConfiguration {
@Value("${" + StrategyConstant.SPRING_APPLICATION_STRATEGY_SCAN_PACKAGES + ":}")
private String scanPackages;
@Autowired
private DiscoveryEnabledAdapter discoveryEnabledAdapter;
......@@ -45,16 +39,4 @@ public class StrategyAutoConfiguration {
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>
......@@ -9,9 +9,8 @@ package com.nepxion.discovery.plugin.strategy.extension.enable;
* @version 1.0
*/
import com.nepxion.discovery.plugin.strategy.extension.context.StrategyContext;
import com.netflix.loadbalancer.Server;
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>
......@@ -9,8 +9,6 @@ package com.nepxion.discovery.plugin.strategy.extension.enable;
* @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.PredicateKey;
import com.netflix.loadbalancer.Server;
......@@ -24,9 +22,7 @@ public class DiscoveryEnabledPredicate extends AbstractServerPredicate {
}
protected boolean apply(Server server) {
StrategyContext context = StrategyContextHolder.currentContext();
return discoveryEnabledAdapter.apply(server, context);
return discoveryEnabledAdapter.apply(server);
}
public void setDiscoveryEnabledAdapter(DiscoveryEnabledAdapter discoveryEnabledAdapter) {
......
......@@ -22,6 +22,7 @@
<module>discovery-plugin-starter-eureka</module>
<module>discovery-plugin-starter-consul</module>
<module>discovery-plugin-starter-zookeeper</module>
<module>discovery-plugin-strategy</module>
<module>discovery-plugin-strategy-extension-service</module>
<module>discovery-console</module>
<module>discovery-console-extension-nacos</module>
......@@ -120,6 +121,12 @@
<dependency>
<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>
<version>${project.version}</version>
</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