ResourceTypeLoader优化
This commit is contained in:
@@ -34,6 +34,7 @@ import org.redkale.convert.Convert;
|
|||||||
import org.redkale.convert.bson.BsonFactory;
|
import org.redkale.convert.bson.BsonFactory;
|
||||||
import org.redkale.convert.json.*;
|
import org.redkale.convert.json.*;
|
||||||
import org.redkale.convert.proto.ProtobufFactory;
|
import org.redkale.convert.proto.ProtobufFactory;
|
||||||
|
import org.redkale.inject.ResourceAnnotationLoader;
|
||||||
import org.redkale.inject.ResourceEvent;
|
import org.redkale.inject.ResourceEvent;
|
||||||
import org.redkale.inject.ResourceFactory;
|
import org.redkale.inject.ResourceFactory;
|
||||||
import org.redkale.inject.ResourceTypeLoader;
|
import org.redkale.inject.ResourceTypeLoader;
|
||||||
@@ -51,6 +52,7 @@ import org.redkale.source.*;
|
|||||||
import org.redkale.source.spi.SourceModuleEngine;
|
import org.redkale.source.spi.SourceModuleEngine;
|
||||||
import org.redkale.util.AnyValue;
|
import org.redkale.util.AnyValue;
|
||||||
import org.redkale.util.AnyValueWriter;
|
import org.redkale.util.AnyValueWriter;
|
||||||
|
import org.redkale.util.Creator;
|
||||||
import org.redkale.util.Environment;
|
import org.redkale.util.Environment;
|
||||||
import org.redkale.util.Redkale;
|
import org.redkale.util.Redkale;
|
||||||
import org.redkale.util.RedkaleClassLoader;
|
import org.redkale.util.RedkaleClassLoader;
|
||||||
@@ -702,25 +704,69 @@ public final class Application {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
// 加载Configuration
|
// 加载Configuration
|
||||||
ClassFilter<?> filter = new ClassFilter(this.getClassLoader(), Configuration.class, Object.class);
|
ClassFilter<?> resConfigFilter = new ClassFilter(this.getClassLoader(), Configuration.class, Object.class);
|
||||||
|
ClassFilter<ResourceAnnotationLoader> resAnnFilter =
|
||||||
|
new ClassFilter(this.getClassLoader(), ResourceAnnotationLoader.class);
|
||||||
|
ClassFilter<ResourceTypeLoader> resTypeFilter =
|
||||||
|
new ClassFilter(this.getClassLoader(), ResourceTypeLoader.class);
|
||||||
try {
|
try {
|
||||||
loadClassByFilters(filter);
|
loadClassByFilters(resConfigFilter, resAnnFilter, resTypeFilter);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RedkaleException(e);
|
throw new RedkaleException(e);
|
||||||
}
|
}
|
||||||
|
{ // Configuration
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
filter.getFilterEntrys().forEach(en -> {
|
resConfigFilter.getFilterEntrys().forEach(en -> {
|
||||||
|
AutoLoad auto = en.getType().getAnnotation(AutoLoad.class);
|
||||||
|
if (auto == null || auto.value()) {
|
||||||
int c = resourceFactory.registerConfiguration(en.getType());
|
int c = resourceFactory.registerConfiguration(en.getType());
|
||||||
sb.append("Load Configuration (type=")
|
sb.append("Load Configuration (type=")
|
||||||
.append(en.getType().getName())
|
.append(en.getType().getName())
|
||||||
.append(") ")
|
.append(") ")
|
||||||
.append(c)
|
.append(c)
|
||||||
.append(" resources\r\n");
|
.append(" resources\r\n");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
if (sb.length() > 0) {
|
if (sb.length() > 0) {
|
||||||
logger.log(Level.INFO, sb.toString().trim());
|
logger.log(Level.INFO, sb.toString().trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
{ // ResourceAnnotationLoader
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
resAnnFilter.getFilterEntrys().forEach(en -> {
|
||||||
|
AutoLoad auto = en.getType().getAnnotation(AutoLoad.class);
|
||||||
|
if (auto == null || auto.value()) {
|
||||||
|
ResourceAnnotationLoader loader =
|
||||||
|
Creator.create(en.getType()).create();
|
||||||
|
resourceFactory.register(loader);
|
||||||
|
sb.append("Load ResourceAnnotationLoader (type=")
|
||||||
|
.append(en.getType().getName())
|
||||||
|
.append(", annotation=")
|
||||||
|
.append(loader.annotationType().getName())
|
||||||
|
.append(")\r\n");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (sb.length() > 0) {
|
||||||
|
logger.log(Level.INFO, sb.toString().trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{ // ResourceTypeLoader
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
resTypeFilter.getFilterEntrys().forEach(en -> {
|
||||||
|
AutoLoad auto = en.getType().getAnnotation(AutoLoad.class);
|
||||||
|
if (auto == null || auto.value()) {
|
||||||
|
ResourceTypeLoader loader = Creator.create(en.getType()).create();
|
||||||
|
resourceFactory.register(loader);
|
||||||
|
sb.append("Load ResourceTypeLoader (type=")
|
||||||
|
.append(en.getType().getName())
|
||||||
|
.append(")\r\n");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (sb.length() > 0) {
|
||||||
|
logger.log(Level.INFO, sb.toString().trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void registerResourceEnvs(boolean first, Properties... envs) {
|
private void registerResourceEnvs(boolean first, Properties... envs) {
|
||||||
for (Properties props : envs) {
|
for (Properties props : envs) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.redkale.util.Utility;
|
|||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
|
@AutoLoad(false)
|
||||||
class NodeAutoServiceLoader implements ResourceTypeLoader {
|
class NodeAutoServiceLoader implements ResourceTypeLoader {
|
||||||
|
|
||||||
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import java.lang.reflect.Type;
|
|||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import org.redkale.annotation.AutoLoad;
|
||||||
import org.redkale.annotation.Priority;
|
import org.redkale.annotation.Priority;
|
||||||
import org.redkale.asm.AsmMethodBoost;
|
import org.redkale.asm.AsmMethodBoost;
|
||||||
import org.redkale.inject.ResourceFactory;
|
import org.redkale.inject.ResourceFactory;
|
||||||
@@ -25,6 +26,7 @@ import org.redkale.util.RedkaleException;
|
|||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
|
@AutoLoad(false)
|
||||||
class NodeExpectServiceLoader implements ResourceTypeLoader {
|
class NodeExpectServiceLoader implements ResourceTypeLoader {
|
||||||
|
|
||||||
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import java.net.SocketAddress;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import org.redkale.annotation.AutoLoad;
|
||||||
import org.redkale.asm.AsmMethodBoost;
|
import org.redkale.asm.AsmMethodBoost;
|
||||||
import static org.redkale.boot.Application.RESNAME_SNCP_ADDRESS;
|
import static org.redkale.boot.Application.RESNAME_SNCP_ADDRESS;
|
||||||
import org.redkale.inject.ResourceFactory;
|
import org.redkale.inject.ResourceFactory;
|
||||||
@@ -29,6 +30,7 @@ import org.redkale.util.RedkaleException;
|
|||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
|
@AutoLoad(false)
|
||||||
class NodeWebSocketNodeLoader implements ResourceTypeLoader {
|
class NodeWebSocketNodeLoader implements ResourceTypeLoader {
|
||||||
|
|
||||||
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import java.util.ServiceLoader;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import org.redkale.annotation.AutoLoad;
|
||||||
import org.redkale.inject.ResourceFactory;
|
import org.redkale.inject.ResourceFactory;
|
||||||
import org.redkale.inject.ResourceTypeLoader;
|
import org.redkale.inject.ResourceTypeLoader;
|
||||||
import org.redkale.service.Service;
|
import org.redkale.service.Service;
|
||||||
@@ -21,6 +22,7 @@ import org.redkale.util.RedkaleException;
|
|||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
|
@AutoLoad(false)
|
||||||
class CachedKeyGeneratorLoader implements ResourceTypeLoader {
|
class CachedKeyGeneratorLoader implements ResourceTypeLoader {
|
||||||
|
|
||||||
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import java.lang.reflect.Type;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import org.redkale.annotation.AutoLoad;
|
||||||
import org.redkale.cached.CachedManager;
|
import org.redkale.cached.CachedManager;
|
||||||
import org.redkale.inject.ResourceFactory;
|
import org.redkale.inject.ResourceFactory;
|
||||||
import org.redkale.inject.ResourceTypeLoader;
|
import org.redkale.inject.ResourceTypeLoader;
|
||||||
@@ -20,6 +21,7 @@ import org.redkale.util.RedkaleException;
|
|||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
|
@AutoLoad(false)
|
||||||
class CachedManagerLoader implements ResourceTypeLoader {
|
class CachedManagerLoader implements ResourceTypeLoader {
|
||||||
|
|
||||||
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import java.lang.reflect.Field;
|
|||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* public class CustomConfProvider implements ResourceAnnotationLoader<CustomConf> {
|
* public class CustomConfAnnotationLoader implements ResourceAnnotationLoader<CustomConf> {
|
||||||
*
|
*
|
||||||
* @Override
|
* @Override
|
||||||
* public void load(
|
* public void load(
|
||||||
@@ -52,6 +52,12 @@ import java.lang.reflect.Field;
|
|||||||
* }
|
* }
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
* ResourceFactory factory = ResourceFactory.create();
|
||||||
|
* factory.register(new CustomConfAnnotationLoader());
|
||||||
|
* InjectBean bean = new InjectBean();
|
||||||
|
* factory.inject(bean);
|
||||||
|
*
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
* </blockquote>
|
* </blockquote>
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -610,7 +610,8 @@ public final class ResourceFactory {
|
|||||||
*/
|
*/
|
||||||
public <T extends Annotation> void register(final ResourceAnnotationLoader<T> loader) {
|
public <T extends Annotation> void register(final ResourceAnnotationLoader<T> loader) {
|
||||||
Objects.requireNonNull(loader);
|
Objects.requireNonNull(loader);
|
||||||
parentRoot().resAnnotationLoaderMap.put(loader.annotationType(), loader);
|
inject(loader);
|
||||||
|
resAnnotationLoaderMap.put(loader.annotationType(), loader);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -619,6 +620,8 @@ public final class ResourceFactory {
|
|||||||
* @param loader ResourceTypeLoader
|
* @param loader ResourceTypeLoader
|
||||||
*/
|
*/
|
||||||
public void register(final ResourceTypeLoader loader) {
|
public void register(final ResourceTypeLoader loader) {
|
||||||
|
Objects.requireNonNull(loader);
|
||||||
|
inject(loader);
|
||||||
resTypeLoaderMap.put(loader.resourceType(), loader);
|
resTypeLoaderMap.put(loader.resourceType(), loader);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -632,6 +635,7 @@ public final class ResourceFactory {
|
|||||||
public int registerConfiguration(final Class configuareClass) {
|
public int registerConfiguration(final Class configuareClass) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
Object instance = Creator.create(configuareClass).create();
|
Object instance = Creator.create(configuareClass).create();
|
||||||
|
inject(instance);
|
||||||
for (Method method : configuareClass.getDeclaredMethods()) {
|
for (Method method : configuareClass.getDeclaredMethods()) {
|
||||||
Resource res = method.getAnnotation(Resource.class);
|
Resource res = method.getAnnotation(Resource.class);
|
||||||
if (res == null) {
|
if (res == null) {
|
||||||
@@ -803,6 +807,21 @@ public final class ResourceFactory {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取类型对应的ResourceAnnotationLoader <br>
|
||||||
|
*
|
||||||
|
* @param <A> 泛型
|
||||||
|
* @param clazz 类型
|
||||||
|
* @return ResourceAnnotationLoader
|
||||||
|
*/
|
||||||
|
public <A extends Annotation> ResourceAnnotationLoader<A> findResourceAnnotationLoader(Class<A> clazz) {
|
||||||
|
ResourceAnnotationLoader<A> it = this.resAnnotationLoaderMap.get(clazz);
|
||||||
|
if (it != null) {
|
||||||
|
return it;
|
||||||
|
}
|
||||||
|
return parent == null ? null : parent.findResourceAnnotationLoader(clazz);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取类型对应的ResourceTypeLoader <br>
|
* 获取类型对应的ResourceTypeLoader <br>
|
||||||
*
|
*
|
||||||
@@ -1246,7 +1265,6 @@ public final class ResourceFactory {
|
|||||||
try {
|
try {
|
||||||
list.add(srcObj);
|
list.add(srcObj);
|
||||||
Class clazz = srcObj.getClass();
|
Class clazz = srcObj.getClass();
|
||||||
final boolean diyLoaderFlag = !parentRoot().resAnnotationLoaderMap.isEmpty();
|
|
||||||
do {
|
do {
|
||||||
if (java.lang.Enum.class.isAssignableFrom(clazz)) {
|
if (java.lang.Enum.class.isAssignableFrom(clazz)) {
|
||||||
break;
|
break;
|
||||||
@@ -1287,14 +1305,13 @@ public final class ResourceFactory {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (flag && diyLoaderFlag) {
|
if (flag) {
|
||||||
parentRoot().resAnnotationLoaderMap.values().stream()
|
for (Annotation ann : field.getAnnotations()) {
|
||||||
.forEach(iloader -> {
|
ResourceAnnotationLoader iloader = findResourceAnnotationLoader(ann.annotationType());
|
||||||
Annotation ann = field.getAnnotation(iloader.annotationType());
|
if (iloader != null) {
|
||||||
if (ann != null) {
|
|
||||||
iloader.load(this, srcResourceName, srcObj, ann, field, attachment);
|
iloader.load(this, srcResourceName, srcObj, ann, field, attachment);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
if (ns == null) {
|
if (ns == null) {
|
||||||
continue;
|
continue;
|
||||||
@@ -1488,11 +1505,11 @@ public final class ResourceFactory {
|
|||||||
*
|
*
|
||||||
* @return ResourceFactory
|
* @return ResourceFactory
|
||||||
*/
|
*/
|
||||||
private ResourceFactory parentRoot() {
|
private ResourceFactory parentRoot2() {
|
||||||
if (parent == null) {
|
if (parent == null) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
return parent.parentRoot();
|
return parent.parentRoot2();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import org.redkale.annotation.Nullable;
|
|||||||
* <blockquote>
|
* <blockquote>
|
||||||
* <pre>
|
* <pre>
|
||||||
*
|
*
|
||||||
* public class CustomConfProvider implements ResourceAnnotationLoader<CustomConf> {
|
* public class CustomTypeLoader implements ResourceTypeLoader {
|
||||||
*
|
*
|
||||||
* @Override
|
* @Override
|
||||||
* public Object load(
|
* public Object load(
|
||||||
@@ -49,7 +49,7 @@ import org.redkale.annotation.Nullable;
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* ResourceFactory factory = ResourceFactory.create();
|
* ResourceFactory factory = ResourceFactory.create();
|
||||||
* factory.register(new DataSourceProvider());
|
* factory.register(new CustomTypeLoader());
|
||||||
* InjectBean bean = new InjectBean();
|
* InjectBean bean = new InjectBean();
|
||||||
* factory.inject(bean);
|
* factory.inject(bean);
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.lang.reflect.Field;
|
|||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import org.redkale.annotation.AutoLoad;
|
||||||
import org.redkale.annotation.Resource;
|
import org.redkale.annotation.Resource;
|
||||||
import org.redkale.inject.ResourceFactory;
|
import org.redkale.inject.ResourceFactory;
|
||||||
import org.redkale.inject.ResourceTypeLoader;
|
import org.redkale.inject.ResourceTypeLoader;
|
||||||
@@ -21,6 +22,7 @@ import org.redkale.util.RedkaleException;
|
|||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
|
@AutoLoad(false)
|
||||||
class CacheSourceLoader implements ResourceTypeLoader {
|
class CacheSourceLoader implements ResourceTypeLoader {
|
||||||
|
|
||||||
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.lang.reflect.Field;
|
|||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import org.redkale.annotation.AutoLoad;
|
||||||
import org.redkale.inject.ResourceFactory;
|
import org.redkale.inject.ResourceFactory;
|
||||||
import org.redkale.inject.ResourceTypeLoader;
|
import org.redkale.inject.ResourceTypeLoader;
|
||||||
import org.redkale.net.sncp.Sncp;
|
import org.redkale.net.sncp.Sncp;
|
||||||
@@ -19,6 +20,7 @@ import org.redkale.util.RedkaleException;
|
|||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
|
@AutoLoad(false)
|
||||||
class DataSourceLoader implements ResourceTypeLoader {
|
class DataSourceLoader implements ResourceTypeLoader {
|
||||||
|
|
||||||
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.lang.reflect.Field;
|
|||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import org.redkale.annotation.AutoLoad;
|
||||||
import org.redkale.inject.ResourceFactory;
|
import org.redkale.inject.ResourceFactory;
|
||||||
import org.redkale.inject.ResourceTypeLoader;
|
import org.redkale.inject.ResourceTypeLoader;
|
||||||
import org.redkale.net.sncp.Sncp;
|
import org.redkale.net.sncp.Sncp;
|
||||||
@@ -21,6 +22,7 @@ import org.redkale.util.RedkaleException;
|
|||||||
*
|
*
|
||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
|
@AutoLoad(false)
|
||||||
class DataSqlMapperLoader implements ResourceTypeLoader {
|
class DataSqlMapperLoader implements ResourceTypeLoader {
|
||||||
|
|
||||||
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
private final Logger logger = Logger.getLogger(getClass().getSimpleName());
|
||||||
|
|||||||
@@ -5,11 +5,10 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.test.inject;
|
package org.redkale.test.inject;
|
||||||
|
|
||||||
import static java.lang.annotation.ElementType.FIELD;
|
|
||||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
import static java.lang.annotation.ElementType.FIELD;
|
||||||
|
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import org.junit.jupiter.api.*;
|
import org.junit.jupiter.api.*;
|
||||||
import org.redkale.convert.json.JsonConvert;
|
import org.redkale.convert.json.JsonConvert;
|
||||||
@@ -19,11 +18,8 @@ import org.redkale.inject.ResourceFactory;
|
|||||||
/** @author zhangjx */
|
/** @author zhangjx */
|
||||||
public class ResourceAnnotationTest {
|
public class ResourceAnnotationTest {
|
||||||
|
|
||||||
private boolean main;
|
|
||||||
|
|
||||||
public static void main(String[] args) throws Throwable {
|
public static void main(String[] args) throws Throwable {
|
||||||
ResourceAnnotationTest test = new ResourceAnnotationTest();
|
ResourceAnnotationTest test = new ResourceAnnotationTest();
|
||||||
test.main = true;
|
|
||||||
test.run();
|
test.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,7 +29,8 @@ public class ResourceAnnotationTest {
|
|||||||
factory.register(new CustomConfProvider());
|
factory.register(new CustomConfProvider());
|
||||||
InjectBean bean = new InjectBean();
|
InjectBean bean = new InjectBean();
|
||||||
factory.inject(bean);
|
factory.inject(bean);
|
||||||
if (!main) Assertions.assertEquals(new File("conf/test.xml").toString(), bean.conf.toString());
|
System.out.println(bean.conf);
|
||||||
|
Assertions.assertEquals(new File("conf/test.xml").toString(), bean.conf.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class CustomConfProvider implements ResourceAnnotationLoader<CustomConf> {
|
public static class CustomConfProvider implements ResourceAnnotationLoader<CustomConf> {
|
||||||
|
|||||||
Reference in New Issue
Block a user