Spring 核心之IOC 容器

核心概念:

IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。

 DI(Dependency Injection)依赖注入:就是指对象是被动接受依赖类而不是自己主动去找,换句话说就是指对象不是从容器中查找它依赖的类,而是在容器实例化对象的时候主动将它依赖的类注入给它

 Spring 核心容器类图

源码分析:

 1 public interface BeanFactory {
 2 //对FactoryBean 的转义定义,因为如果使用bean 的名字检索FactoryBean 得到的对象是工厂生成的对象,
 3 //如果需要得到工厂本身,需要转义
 4 String FACTORY_BEAN_PREFIX = "&";
 5 //根据bean 的名字,获取在IOC 容器中得到bean 实例
 6 Object getBean(String name) throws BeansException;
 7 //根据bean 的名字和Class 类型来得到bean 实例,增加了类型安全验证机制。
 8 <T> T getBean(String name, @Nullable Class<T> requiredType) throws BeansException;
 9 Object getBean(String name, Object... args) throws BeansException;
10 <T> T getBean(Class<T> requiredType) throws BeansException;
11 <T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
12 //提供对bean 的检索,看看是否在IOC 容器有这个名字的bean
13 boolean containsBean(String name);
14 //根据bean 名字得到bean 实例,并同时判断这个bean 是不是单例
15 boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
16 boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
17 boolean isTypeMatch(String name, ResolvableType typeToMatch) throws
18 NoSuchBeanDefinitionException;
19 boolean isTypeMatch(String name, @Nullable Class<?> typeToMatch) throws
20 NoSuchBeanDefinitionException;
22 //得到bean 实例的Class 类型
23 @Nullable
24 Class<?> getType(String name) throws NoSuchBeanDefinitionException;
25 //得到bean 的别名,如果根据别名检索,那么其原名也会被检索出来
26 String[] getAliases(String name);
27 }

 

posted @ 2019-08-21 22:23  落叶随风起  阅读(216)  评论(0编辑  收藏  举报