上一篇介绍了注入入口AutoWire类,以及一部分IOCController的实现。
这里介绍IOCController7个核心方法。
void invokeSetter(Object target, Method m) //调用setter
Object construct(Constructor<?> con, Object[] parameterValues) //根据构造函数和参数进行实例化
Object constructBean(String beanname) //构造一个bean
Object constructObject(Class<?> cls) //构造一个类的对象
Object get(Class<?> cls) //根据类型获取一个实例
Object getBean(String beanname) //获取一个bean
Object getObject(Class<?> cls) //根据类型获取一个类的对象
以及第二篇介绍的4类handler(TypeAnnotationHandler,SetterAnnotationHandler,ParamAnnotationHandler,ConstructorFilter)
一组依赖关系:
AutoWire-->invokeSetter(Object ,Method)-->SetterAnnotationHandler
get(Class)-->TypeAnnotationHandler
getBean(String)
-->constructBean(String)
-->constructObject(Class)
-->ConstructorFilter & -->ParamAnnotationHandler
-->construct(Constructor,Object[])
getObject(Class)
-->constructObject(Class)
每个Handler都会调用IOCController中的这7个方法。
所以依赖链就非常清晰了,
大致如图
图有点大,截两张吧= =