mirror of
https://gitee.com/mirrors/Spring-Cloud-Alibaba.git
synced 2021-06-26 13:25:11 +08:00
update sentinel version to 0.2.0
This commit is contained in:
parent
b9710ada46
commit
c8d911e89b
@ -16,7 +16,7 @@
|
|||||||
<description>Spring Cloud Alibaba Dependencies</description>
|
<description>Spring Cloud Alibaba Dependencies</description>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<sentinel.version>0.1.1</sentinel.version>
|
<sentinel.version>0.2.0</sentinel.version>
|
||||||
<oss.version>3.1.0</oss.version>
|
<oss.version>3.1.0</oss.version>
|
||||||
<nacos.version>0.2.1</nacos.version>
|
<nacos.version>0.2.1</nacos.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
@ -2,7 +2,7 @@ package org.springframework.cloud.alibaba.cloud.examples;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.TypeReference;
|
import com.alibaba.fastjson.TypeReference;
|
||||||
@ -10,9 +10,10 @@ import com.alibaba.fastjson.TypeReference;
|
|||||||
/**
|
/**
|
||||||
* @author fangjian
|
* @author fangjian
|
||||||
*/
|
*/
|
||||||
public class JsonFlowRuleListParser implements ConfigParser<String, List<FlowRule>> {
|
public class JsonFlowRuleListParser implements Converter<String, List<FlowRule>> {
|
||||||
@Override
|
@Override
|
||||||
public List<FlowRule> parse(String source) {
|
public List<FlowRule> convert(String source) {
|
||||||
return JSON.parseObject(source, new TypeReference<List<FlowRule>>() {});
|
return JSON.parseObject(source, new TypeReference<List<FlowRule>>() {
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import org.springframework.cloud.alibaba.sentinel.annotation.SentinelProtect;
|
|||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author xiaojing
|
* @author xiaojing
|
||||||
@ -26,7 +26,7 @@ public class ServiceApplication {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public ConfigParser myParser() {
|
public Converter myParser() {
|
||||||
return new JsonFlowRuleListParser();
|
return new JsonFlowRuleListParser();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,10 +34,10 @@ import org.springframework.core.io.support.ResourcePatternResolver;
|
|||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.ClassUtils;
|
import org.springframework.util.ClassUtils;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.DataSource;
|
import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link DataSource} Loader
|
* {@link ReadableDataSource} Loader
|
||||||
*
|
*
|
||||||
* @author fangjian
|
* @author fangjian
|
||||||
*/
|
*/
|
||||||
@ -50,20 +50,20 @@ public class DataSourceLoader {
|
|||||||
private final static String ALL_PROPERTIES_RESOURCES_LOCATION = CLASSPATH_ALL_URL_PREFIX
|
private final static String ALL_PROPERTIES_RESOURCES_LOCATION = CLASSPATH_ALL_URL_PREFIX
|
||||||
+ PROPERTIES_RESOURCE_LOCATION;
|
+ PROPERTIES_RESOURCE_LOCATION;
|
||||||
|
|
||||||
private final static ConcurrentMap<String, Class<? extends DataSource>> dataSourceClassesCache = new ConcurrentHashMap<String, Class<? extends DataSource>>(
|
private final static ConcurrentMap<String, Class<? extends ReadableDataSource>> dataSourceClassesCache = new ConcurrentHashMap<String, Class<? extends ReadableDataSource>>(
|
||||||
4);
|
4);
|
||||||
|
|
||||||
static void loadAllDataSourceClassesCache() {
|
static void loadAllDataSourceClassesCache() {
|
||||||
Map<String, Class<? extends DataSource>> dataSourceClassesMap = loadAllDataSourceClassesCache(
|
Map<String, Class<? extends ReadableDataSource>> dataSourceClassesMap = loadAllDataSourceClassesCache(
|
||||||
ALL_PROPERTIES_RESOURCES_LOCATION);
|
ALL_PROPERTIES_RESOURCES_LOCATION);
|
||||||
|
|
||||||
dataSourceClassesCache.putAll(dataSourceClassesMap);
|
dataSourceClassesCache.putAll(dataSourceClassesMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Map<String, Class<? extends DataSource>> loadAllDataSourceClassesCache(
|
static Map<String, Class<? extends ReadableDataSource>> loadAllDataSourceClassesCache(
|
||||||
String resourcesLocation) {
|
String resourcesLocation) {
|
||||||
|
|
||||||
Map<String, Class<? extends DataSource>> dataSourcesMap = new HashMap<String, Class<? extends DataSource>>(
|
Map<String, Class<? extends ReadableDataSource>> dataSourcesMap = new HashMap<String, Class<? extends ReadableDataSource>>(
|
||||||
4);
|
4);
|
||||||
|
|
||||||
ClassLoader classLoader = DataSourceLoader.class.getClassLoader();
|
ClassLoader classLoader = DataSourceLoader.class.getClassLoader();
|
||||||
@ -102,10 +102,10 @@ public class DataSourceLoader {
|
|||||||
|
|
||||||
Class<?> dataSourceClass = ClassUtils.resolveClassName(className,
|
Class<?> dataSourceClass = ClassUtils.resolveClassName(className,
|
||||||
classLoader);
|
classLoader);
|
||||||
Assert.isAssignable(DataSource.class, dataSourceClass);
|
Assert.isAssignable(ReadableDataSource.class, dataSourceClass);
|
||||||
|
|
||||||
dataSourcesMap.put(type,
|
dataSourcesMap.put(type,
|
||||||
(Class<? extends DataSource>) dataSourceClass);
|
(Class<? extends ReadableDataSource>) dataSourceClass);
|
||||||
|
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
logger.debug("Sentinel DataSource implementation [ type : "
|
logger.debug("Sentinel DataSource implementation [ type : "
|
||||||
@ -126,10 +126,11 @@ public class DataSourceLoader {
|
|||||||
return dataSourcesMap;
|
return dataSourcesMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Class<? extends DataSource> loadClass(String type)
|
public static Class<? extends ReadableDataSource> loadClass(String type)
|
||||||
throws IllegalArgumentException {
|
throws IllegalArgumentException {
|
||||||
|
|
||||||
Class<? extends DataSource> dataSourceClass = dataSourceClassesCache.get(type);
|
Class<? extends ReadableDataSource> dataSourceClass = dataSourceClassesCache
|
||||||
|
.get(type);
|
||||||
|
|
||||||
if (dataSourceClass == null) {
|
if (dataSourceClass == null) {
|
||||||
if (dataSourceClassesCache.isEmpty()) {
|
if (dataSourceClassesCache.isEmpty()) {
|
||||||
|
@ -44,13 +44,13 @@ import org.springframework.core.env.ConfigurableEnvironment;
|
|||||||
import org.springframework.util.ReflectionUtils;
|
import org.springframework.util.ReflectionUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link SentinelDataSource @SentinelDataSource} Post Processor
|
* {@link SentinelDataSource @SentinelDataSource} Post Processor
|
||||||
*
|
*
|
||||||
* @author fangjian
|
* @author fangjian
|
||||||
* @see com.alibaba.csp.sentinel.datasource.DataSource
|
* @see com.alibaba.csp.sentinel.datasource.ReadableDataSource
|
||||||
* @see SentinelDataSource
|
* @see SentinelDataSource
|
||||||
*/
|
*/
|
||||||
public class SentinelDataSourcePostProcessor
|
public class SentinelDataSourcePostProcessor
|
||||||
@ -109,7 +109,7 @@ public class SentinelDataSourcePostProcessor
|
|||||||
if (dataSourceFieldCache.containsKey(beanName)) {
|
if (dataSourceFieldCache.containsKey(beanName)) {
|
||||||
List<SentinelDataSourceField> sentinelDataSourceFields = dataSourceFieldCache
|
List<SentinelDataSourceField> sentinelDataSourceFields = dataSourceFieldCache
|
||||||
.get(beanName);
|
.get(beanName);
|
||||||
for(SentinelDataSourceField sentinelDataSourceField : sentinelDataSourceFields) {
|
for (SentinelDataSourceField sentinelDataSourceField : sentinelDataSourceFields) {
|
||||||
try {
|
try {
|
||||||
// construct DataSource field annotated by @SentinelDataSource
|
// construct DataSource field annotated by @SentinelDataSource
|
||||||
Field field = sentinelDataSourceField.getField();
|
Field field = sentinelDataSourceField.getField();
|
||||||
@ -170,8 +170,8 @@ public class SentinelDataSourcePostProcessor
|
|||||||
for (String propertyName : propertyMap.keySet()) {
|
for (String propertyName : propertyMap.keySet()) {
|
||||||
Field field = ReflectionUtils.findField(targetClass, propertyName);
|
Field field = ReflectionUtils.findField(targetClass, propertyName);
|
||||||
if (field != null) {
|
if (field != null) {
|
||||||
if (field.getType().isAssignableFrom(ConfigParser.class)) {
|
if (field.getType().isAssignableFrom(Converter.class)) {
|
||||||
// ConfigParser get from ApplicationContext
|
// Converter get from ApplicationContext
|
||||||
builder.addPropertyReference(propertyName,
|
builder.addPropertyReference(propertyName,
|
||||||
propertyMap.get(propertyName).toString());
|
propertyMap.get(propertyName).toString());
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package org.springframework.cloud.alibaba.sentinel.datasource.factorybean;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.FactoryBean;
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||||
import com.alibaba.csp.sentinel.datasource.apollo.ApolloDataSource;
|
import com.alibaba.csp.sentinel.datasource.apollo.ApolloDataSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,12 +14,12 @@ public class ApolloDataSourceFactoryBean implements FactoryBean<ApolloDataSource
|
|||||||
private String namespaceName;
|
private String namespaceName;
|
||||||
private String flowRulesKey;
|
private String flowRulesKey;
|
||||||
private String defaultFlowRuleValue;
|
private String defaultFlowRuleValue;
|
||||||
private ConfigParser configParser;
|
private Converter converter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ApolloDataSource getObject() throws Exception {
|
public ApolloDataSource getObject() throws Exception {
|
||||||
return new ApolloDataSource(namespaceName, flowRulesKey, defaultFlowRuleValue,
|
return new ApolloDataSource(namespaceName, flowRulesKey, defaultFlowRuleValue,
|
||||||
configParser);
|
converter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -56,11 +56,11 @@ public class ApolloDataSourceFactoryBean implements FactoryBean<ApolloDataSource
|
|||||||
this.defaultFlowRuleValue = defaultFlowRuleValue;
|
this.defaultFlowRuleValue = defaultFlowRuleValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigParser getConfigParser() {
|
public Converter getConverter() {
|
||||||
return configParser;
|
return converter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConfigParser(ConfigParser configParser) {
|
public void setConverter(Converter converter) {
|
||||||
this.configParser = configParser;
|
this.converter = converter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import java.nio.charset.Charset;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.FactoryBean;
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||||
import com.alibaba.csp.sentinel.datasource.FileRefreshableDataSource;
|
import com.alibaba.csp.sentinel.datasource.FileRefreshableDataSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -18,11 +18,11 @@ public class FileRefreshableDataSourceFactoryBean implements FactoryBean<FileRef
|
|||||||
private String charset;
|
private String charset;
|
||||||
private long recommendRefreshMs;
|
private long recommendRefreshMs;
|
||||||
private int bufSize;
|
private int bufSize;
|
||||||
private ConfigParser configParser;
|
private Converter converter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FileRefreshableDataSource getObject() throws Exception {
|
public FileRefreshableDataSource getObject() throws Exception {
|
||||||
return new FileRefreshableDataSource(new File(file), configParser,
|
return new FileRefreshableDataSource(new File(file), converter,
|
||||||
recommendRefreshMs, bufSize, Charset.forName(charset));
|
recommendRefreshMs, bufSize, Charset.forName(charset));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,11 +68,11 @@ public class FileRefreshableDataSourceFactoryBean implements FactoryBean<FileRef
|
|||||||
this.bufSize = bufSize;
|
this.bufSize = bufSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigParser getConfigParser() {
|
public Converter getConverter() {
|
||||||
return configParser;
|
return converter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConfigParser(ConfigParser configParser) {
|
public void setConverter(Converter converter) {
|
||||||
this.configParser = configParser;
|
this.converter = converter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package org.springframework.cloud.alibaba.sentinel.datasource.factorybean;
|
|||||||
|
|
||||||
import org.springframework.beans.factory.FactoryBean;
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||||
import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource;
|
import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,11 +14,11 @@ public class NacosDataSourceFactoryBean implements FactoryBean<NacosDataSource>
|
|||||||
private String serverAddr;
|
private String serverAddr;
|
||||||
private String groupId;
|
private String groupId;
|
||||||
private String dataId;
|
private String dataId;
|
||||||
private ConfigParser configParser;
|
private Converter converter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NacosDataSource getObject() throws Exception {
|
public NacosDataSource getObject() throws Exception {
|
||||||
return new NacosDataSource(serverAddr, groupId, dataId, configParser);
|
return new NacosDataSource(serverAddr, groupId, dataId, converter);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -55,11 +55,11 @@ public class NacosDataSourceFactoryBean implements FactoryBean<NacosDataSource>
|
|||||||
this.dataId = dataId;
|
this.dataId = dataId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigParser getConfigParser() {
|
public Converter getConverter() {
|
||||||
return configParser;
|
return converter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConfigParser(ConfigParser configParser) {
|
public void setConverter(Converter converter) {
|
||||||
this.configParser = configParser;
|
this.converter = converter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ package org.springframework.cloud.alibaba.sentinel.datasource.factorybean;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.FactoryBean;
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
|
|
||||||
import com.alibaba.csp.sentinel.datasource.ConfigParser;
|
import com.alibaba.csp.sentinel.datasource.Converter;
|
||||||
import com.alibaba.csp.sentinel.datasource.zookeeper.ZookeeperDataSource;
|
import com.alibaba.csp.sentinel.datasource.zookeeper.ZookeeperDataSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -19,17 +19,17 @@ public class ZookeeperDataSourceFactoryBean implements FactoryBean<ZookeeperData
|
|||||||
private String groupId;
|
private String groupId;
|
||||||
private String dataId;
|
private String dataId;
|
||||||
|
|
||||||
private ConfigParser configParser;
|
private Converter converter;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ZookeeperDataSource getObject() throws Exception {
|
public ZookeeperDataSource getObject() throws Exception {
|
||||||
if (StringUtils.isNotEmpty(groupId) && StringUtils.isNotEmpty(dataId)) {
|
if (StringUtils.isNotEmpty(groupId) && StringUtils.isNotEmpty(dataId)) {
|
||||||
// the path will be /{groupId}/{dataId}
|
// the path will be /{groupId}/{dataId}
|
||||||
return new ZookeeperDataSource(serverAddr, groupId, dataId, configParser);
|
return new ZookeeperDataSource(serverAddr, groupId, dataId, converter);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// using path directly
|
// using path directly
|
||||||
return new ZookeeperDataSource(serverAddr, path, configParser);
|
return new ZookeeperDataSource(serverAddr, path, converter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,11 +75,11 @@ public class ZookeeperDataSourceFactoryBean implements FactoryBean<ZookeeperData
|
|||||||
this.dataId = dataId;
|
this.dataId = dataId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConfigParser getConfigParser() {
|
public Converter getConverter() {
|
||||||
return configParser;
|
return converter;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConfigParser(ConfigParser configParser) {
|
public void setConverter(Converter converter) {
|
||||||
this.configParser = configParser;
|
this.converter = converter;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user