public class AopFactory extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
protected boolean |
injectSuperClass |
protected HashMap<Class<?>,Class<?>> |
mapping |
protected ThreadLocal<HashMap<Class<?>,Object>> |
prototypeTl |
protected boolean |
singleton |
protected ConcurrentHashMap<Class<?>,Object> |
singletonCache |
protected ThreadLocal<HashMap<Class<?>,Object>> |
singletonTl |
| 构造器和说明 |
|---|
AopFactory() |
| 限定符和类型 | 方法和说明 |
|---|---|
<T> AopFactory |
addMapping(Class<T> from,
Class<? extends T> to) |
<T> AopFactory |
addMapping(Class<T> from,
String to) |
AopFactory |
addSingletonObject(Class<?> type,
Object singletonObject) |
AopFactory |
addSingletonObject(Object singletonObject) |
protected Object |
createObject(Class<?> targetClass) |
protected <T> T |
doGet(Class<T> targetClass) |
protected <T> T |
doGetPrototype(Class<T> targetClass) |
protected <T> T |
doGetSingleton(Class<T> targetClass) |
protected void |
doInject(Class<?> targetClass,
Object targetObject) |
<T> T |
get(Class<T> targetClass) |
Class<?> |
getMappingClass(Class<?> from)
获取父类到子类的映射值,或者接口到实现类的映射值
|
protected Class<?> |
getUsefulClass(Class<?> clazz)
被 cglib、guice 增强过的类需要通过本方法获取到被增强之前的类型
否则调用其 targetClass.getDeclaredFields() 方法时
获取到的是一堆 cglib guice 生成类中的 Field 对象
而被增强前的原类型中的 Field 反而获取不到
|
<T> T |
inject(Class<T> targetClass,
T targetObject) |
<T> T |
inject(T targetObject) |
boolean |
isInjectSuperClass() |
boolean |
isSingleton() |
AopFactory |
setInjectSuperClass(boolean injectSuperClass)
设置是否对超类进行注入
|
AopFactory |
setSingleton(boolean singleton)
设置被注入的对象是否为单例,可使用 @Singleton(boolean) 覆盖此默认值
|
protected ConcurrentHashMap<Class<?>,Object> singletonCache
protected ThreadLocal<HashMap<Class<?>,Object>> singletonTl
protected ThreadLocal<HashMap<Class<?>,Object>> prototypeTl
protected boolean singleton
protected boolean injectSuperClass
public <T> T get(Class<T> targetClass)
protected <T> T doGet(Class<T> targetClass) throws ReflectiveOperationException
protected <T> T doGetSingleton(Class<T> targetClass) throws ReflectiveOperationException
protected <T> T doGetPrototype(Class<T> targetClass) throws ReflectiveOperationException
public <T> T inject(T targetObject)
public <T> T inject(Class<T> targetClass, T targetObject)
protected void doInject(Class<?> targetClass, Object targetObject) throws ReflectiveOperationException
protected Object createObject(Class<?> targetClass) throws ReflectiveOperationException
protected Class<?> getUsefulClass(Class<?> clazz)
public AopFactory setSingleton(boolean singleton)
public boolean isSingleton()
public AopFactory setInjectSuperClass(boolean injectSuperClass)
public boolean isInjectSuperClass()
public AopFactory addSingletonObject(Class<?> type, Object singletonObject)
public AopFactory addSingletonObject(Object singletonObject)
public <T> AopFactory addMapping(Class<T> from, Class<? extends T> to)
public <T> AopFactory addMapping(Class<T> from, String to)
Copyright © 2022. All rights reserved.