SpringIOC自动注入流程

博客详细介绍了Spring的ApplicationContext如何进行Bean的自动注入。它作为ListableBeanFactory的子类,可以获取多个Bean,并且支持多级BeanFactory。虽然ApplicationContext本身不直接继承AutowireCapableBeanFactory,但可以通过getAutowireCapableBeanFactory()方法获取自动装配功能。此外,ConfigurableListableBeanFactory接口在初始化Bean容器和处理singleton beans中起到关键作用。
摘要由CSDN通过智能技术生成
 
 
SpringIOC源码的分析
 
SpringIOC源码类的层次图
 
 
测试代码:
public class app {
    public static void main(String[] args) {
        // 用我们的配置文件来启动一个 ApplicationContext
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:application.xml");


        System.out.println("context 启动成功");


        // 从 context 中取出我们的 Bean,而不是用 new MessageServiceImpl() 这种方式
        MessageService messageService = context.getBean(MessageService.class);
        // 这句将输出: hello world
        System.out.println(messageService.getMessage());
    }
}

 

 
 
 
BeanFactory简介
 
 
 
 
  • ApplicationContext 继承了 ListableBeanFactory,这个 Listable 的意思就是,通过这个接口,我们可以获取多个 Bean,最顶层 BeanFactory 接口的方法都是获取单个 Bean 的。
  • ApplicationContext 继承了 HierarchicalBeanFactory,Hierarchical 单词本身已经能说明问题了,也就是说我们可以在应用中起多个 BeanFactory,然后可以将各个 BeanFactory 设置为父子关系。
  • AutowireCapableBeanFactory 这个名字中的 Autowire 大家都非常熟悉,它就是用来自动装配 Bean 用的,但是仔细看上图,ApplicationContext 并没有继承它,不过不用担心,不使用继承,不代表不可以使用组合,如果你看到 ApplicationContext 接口定义中的最后一个方法 getAutowireCapableBeanFactory() 就知道了。
  • ConfigurableListableBeanFactory 也是一个特殊的接口,看图,特殊之处在于它继承了第二层所有的三个接口,而 ApplicationContext 没有。这点之后会用到。
 
 
 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring IOC(控制反转)是Spring框架的核心特性之一,它通过管理对象的创建和依赖注入,实现了对象之间的解耦和灵活性。下面是Spring IOC的工作流程: 1. 配置:首先,您需要创建一个 Spring 配置文件,通常是 XML 格式的。这个配置文件中包含了Spring容器需要了解的关于对象的定义和配置信息,比如对象的类名、依赖关系、属性值等。 2. 加载:Spring IOC 容器负责加载和解析配置文件,读取配置信息并创建相应的对象。 3. 实例化:Spring IOC 容器根据配置文件中的定义,使用反射机制实例化对象。这些对象被称为 Spring Bean。 4. 依赖注入:一旦对象被实例化,Spring IOC 容器会检查对象的依赖关系,并自动将依赖的对象注入到相应的属性中。这种依赖注入可以通过构造函数、Setter 方法或字段注入来完成。 5. 生命周期管理:Spring IOC 容器管理 Spring Bean 的生命周期。它会在适当的时候调用初始化方法和销毁方法,以确保对象被正确地创建和销毁。 6. 提供 Bean:一旦所有的对象都被创建和初始化,Spring IOC 容器就可以提供这些对象给其他的应用程序组件使用了。 通过这个工作流程Spring IOC 实现了对象的解耦和灵活性。开发人员只需要关注对象的定义和配置,而不需要显式地创建和管理对象。这样可以提高代码的可维护性、可测试性和可扩展性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值