container是容器的意思,这让人很容易联想到java的Collection接口下的集合类,然而container并不是一个数据结构,我认为container其实是一个工厂,可以对对象的生命周期进行管理,,使对象的创建与业务逻辑的代码分开,同时可以避免对象的频繁的无用的创建,它可以将从配置文件中读取到的信息,通过依赖注入,缓存成key,value形式,也可以通过getInstance()通过反射将要调用的对象提取出来,,下面将对Container容器相关的类或接口的源码进行解析。
Container接口
从方法列表中可以大概看出整个容器的实现方式,依赖注入,getInstance获取instance。
下面我们来看看这个接口的实现类ContainerImpl
getInstance()方法
@SuppressWarnings("unchecked")
<T> T getInstance( Class<T> type, String name, InternalContext context ) {
ExternalContext<?> previous = context.getExternalContext();
Key<T> key = Key.newInstance(type, name);
context.setExternalContext(ExternalContext.newInstance(null, key, this