1. ##组件注册 ###使用@Configuration @Bean给容器中注册组件 使用xml配置文件进行注入: eg:Person类: 图片说明 1.使用xml文件的bean标签向容器中注入一个bean组件: 图片说明
  2. 获得ioc容器和其中的Person组件: 图片说明

使用配置类和注解进行注入 1.建立配置类(等同于配置文件)加上@Configuration注解。 2.使用@Bean注解给容器中注入一个bean组件。 图片说明 3.获取ioc容器中的组件。 图片说明

###@ComponentScan自动扫描组件 使用xml配置文件进行包扫描: 图片说明 使用配置类进行包扫描: 图片说明 获取IOC中的组件: 图片说明 扩展: 可以只扫描一些包和只不扫一些包(以下根据类型注解类型扫包)。 不扫某包 excludeFilters: 图片说明 只扫某包 includeFilters: 图片说明 @Filter:过滤条件。 图片说明 使用自定义规则实现TypeFilter

执行流程

核心方法refresh() alt

  1. prepareRefresh():做容器刷新前的准备工作,比如设置容器的启动时间,活跃状态。准备监听器等。
  2. obtainFreshBeanFactory():创建容器对象:DefaultListableBeanFactory,将xml配置文件加载到当前工厂中,获得BeanDefinition
  3. prepareBeanFactory(beanFactory):给上一步容器对象生成时未赋值得属性赋值.
  4. postProcessBeanFactory(beanFactory); BFPP接口里得方法,这里用于扩展
  5. invokeBeanFactoryPostProcessors(beanFactory); 执行BFPP后置处理器。

调用refresh()之前: alt setConfigLocations:校验配置文件。