spring ioc
反转控制
什么叫做轻量级容器?
可以管理容器,不需要特殊的配置来进行操作,最大程度的代码复用,轻量级的内存占用以及最小化的API的依赖,容器需要有管理的渠道。
1.依赖查找
pom文件中的<relativePath>../pom.xml</relativePath>解决pom依赖的继承的问题。
根据bean名称查找
实时查找
通过BeanFactory.getBean("xxx")
延迟查找
使用org.springframework.beans.factory.ObjectFactory
根据bean类型查找
单个bean对象
通过BeanFactory.getBean("xxx.class")
当有多个bean时,需要设置(必须加@Primary)
集合bean对象
Map<String, T> = ListableBeanFactory.getBeansOfType("xxx.class");
根据bean名称+类型查找
根据java注解查找
Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType)
2.依赖注入
根据Bean名称注入
根据Bean类型注入
单个bean对象
集合bean对象
注入容器内建Bean对象
注入非Bean对象
3.依赖来源
自定义Bean
容器内建Bean对象
容器内建依赖
4.配置元信息
Bean定义配置
基于XML文件
基于Properties文件
基于java注解
基于java API
IoC容器配置
基于XML文件
基于java注解
基于java API
外部化属性配置
基于java注解
BeanFactory和ApplicationContext谁才是IoC容器?
ApplicationContext是BeanFactory的子接口,BeanFactory提供配置框架及基础的特性,ApplicationContext提供更多企业级的特性(AOP整合,国际化支持,事务发布等)。
ApplicationContext采用组合的方式使用BeanFactory的相关功能。