增加SourceType
This commit is contained in:
@@ -32,6 +32,7 @@ import org.redkale.util.*;
|
|||||||
@AutoLoad(false)
|
@AutoLoad(false)
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ResourceType(DataSource.class)
|
@ResourceType(DataSource.class)
|
||||||
|
@SourceType(DataJdbcSource.class)
|
||||||
public class DataJdbcSource extends AbstractDataSqlSource {
|
public class DataJdbcSource extends AbstractDataSqlSource {
|
||||||
|
|
||||||
protected JdbcConnectionPool readPool;
|
protected JdbcConnectionPool readPool;
|
||||||
|
|||||||
34
src/main/java/org/redkale/source/SourceType.java
Normal file
34
src/main/java/org/redkale/source/SourceType.java
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2016-2116 Redkale
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
package org.redkale.source;
|
||||||
|
|
||||||
|
import java.lang.annotation.*;
|
||||||
|
import static java.lang.annotation.ElementType.TYPE;
|
||||||
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 显式的指明Source多个资源类型。
|
||||||
|
*
|
||||||
|
* <p>详情见: https://redkale.org
|
||||||
|
*
|
||||||
|
* @author zhangjx
|
||||||
|
* @since 2.8.0
|
||||||
|
*/
|
||||||
|
@Documented
|
||||||
|
@Target({TYPE})
|
||||||
|
@Retention(RUNTIME)
|
||||||
|
@Repeatable(SourceType.SourceTypes.class)
|
||||||
|
public @interface SourceType {
|
||||||
|
|
||||||
|
Class value();
|
||||||
|
|
||||||
|
@Documented
|
||||||
|
@Target({TYPE})
|
||||||
|
@Retention(RUNTIME)
|
||||||
|
@interface SourceTypes {
|
||||||
|
|
||||||
|
SourceType[] value();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -35,6 +35,7 @@ import org.redkale.source.DataSources;
|
|||||||
import org.redkale.source.DataSqlSource;
|
import org.redkale.source.DataSqlSource;
|
||||||
import org.redkale.source.SearchSource;
|
import org.redkale.source.SearchSource;
|
||||||
import org.redkale.source.SourceManager;
|
import org.redkale.source.SourceManager;
|
||||||
|
import org.redkale.source.SourceType;
|
||||||
import org.redkale.util.AnyValue;
|
import org.redkale.util.AnyValue;
|
||||||
import org.redkale.util.AnyValueWriter;
|
import org.redkale.util.AnyValueWriter;
|
||||||
import org.redkale.util.InstanceProvider;
|
import org.redkale.util.InstanceProvider;
|
||||||
@@ -390,6 +391,11 @@ public class SourceModuleEngine extends ModuleEngine implements SourceManager {
|
|||||||
loadCacheSource(sourceConf.getValue(AbstractCacheSource.CACHE_SOURCE_RESOURCE), autoMemory);
|
loadCacheSource(sourceConf.getValue(AbstractCacheSource.CACHE_SOURCE_RESOURCE), autoMemory);
|
||||||
if (source != null) {
|
if (source != null) {
|
||||||
resourceFactory.register(sourceName, CacheSource.class, source);
|
resourceFactory.register(sourceName, CacheSource.class, source);
|
||||||
|
for (SourceType t : source.getClass().getAnnotationsByType(SourceType.class)) {
|
||||||
|
if (t.value() != CacheSource.class) {
|
||||||
|
resourceFactory.register(sourceName, t.value(), source);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
@@ -403,6 +409,11 @@ public class SourceModuleEngine extends ModuleEngine implements SourceManager {
|
|||||||
|
|
||||||
cacheSources.add(source);
|
cacheSources.add(source);
|
||||||
resourceFactory.register(sourceName, CacheSource.class, source);
|
resourceFactory.register(sourceName, CacheSource.class, source);
|
||||||
|
for (SourceType t : source.getClass().getAnnotationsByType(SourceType.class)) {
|
||||||
|
if (t.value() != CacheSource.class) {
|
||||||
|
resourceFactory.register(sourceName, t.value(), source);
|
||||||
|
}
|
||||||
|
}
|
||||||
logger.info("Load CacheSource resourceName='" + sourceName + "', source=" + source + " in "
|
logger.info("Load CacheSource resourceName='" + sourceName + "', source=" + source + " in "
|
||||||
+ (System.currentTimeMillis() - st) + " ms");
|
+ (System.currentTimeMillis() - st) + " ms");
|
||||||
return source;
|
return source;
|
||||||
@@ -464,8 +475,10 @@ public class SourceModuleEngine extends ModuleEngine implements SourceManager {
|
|||||||
if (source instanceof DataSqlSource) {
|
if (source instanceof DataSqlSource) {
|
||||||
resourceFactory.register(sourceName, DataSqlSource.class, source);
|
resourceFactory.register(sourceName, DataSqlSource.class, source);
|
||||||
}
|
}
|
||||||
if (source instanceof DataJdbcSource) {
|
for (SourceType t : source.getClass().getAnnotationsByType(SourceType.class)) {
|
||||||
resourceFactory.register(sourceName, DataJdbcSource.class, source);
|
if (t.value() != DataSqlSource.class) {
|
||||||
|
resourceFactory.register(sourceName, t.value(), source);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -536,5 +549,4 @@ public class SourceModuleEngine extends ModuleEngine implements SourceManager {
|
|||||||
((AnyValueWriter) conf).setValue("name", sourceName);
|
((AnyValueWriter) conf).setValue("name", sourceName);
|
||||||
return conf;
|
return conf;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user