Spring 通过IoC 容器来管理所有Java对象(Bean)以及其相互间的依赖关系。
依赖注入(Dependency Injection) 和 控制反转(Inversion of Control) 是一个事物的两种不同的说法。
基本思想:把类的依赖从类的内部转到外部以减少依赖。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
一、Spring 框架中有三种实现bean 配置的方式:
1、基于XML文件配置:XML文件中使用bean关键词。
2、基于注解的方式:XML文件中使用component-scan关键词。
3、基于Java类方式:不需要XML文件,配置类使用Configuration注释。
不管使用哪种方式配置bean,其在Spring框架中发挥的作用、bean的属性(元数据)和使用过程都是相同的。
1.1、配置方式使用场景
1、基于XML的配置主要使用场景
第三方类库,如DataSource、JdbcTemplate等;
命名空间,如aop、context等;
2、基于注解的配置主要使用场景
Bean的实现类是当前项目开发的,可直接在Java类中使用注解配置
3、基于Java类的配置主要使用场景
对于实例化Bean的逻辑比较复杂,则比较适合用基于Java类配置的方式
在日常的开发中我们主要是使用XML配置和注解配置方式向结合的开发方式,一般不推荐使用基于Java类的配置方式。
二、Spring 容器成功启动的三个必要条件
1、Spring的类包必须已经放在Spring的类容器下面。
2、应用程序应当为Spring提供完备的Bean的配置信息。
3、Bean的类都已经放在Spring的类容器下面。
Spring启动时读取应用程序提供的Bean的配置信息,并在Spring容器中生成一份相应的Bean的配置注册表,然后根据这张注册表来实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。
三、以配置文件为例,bean其作用和意义
Spring的配置文件是Spring容器对Bean进行生产以及关系注入的图纸,它是Spring的基础。如果我们没有配置文件的话,则Spring的容器将无从谈起。
Spring 的配置文件是用于指导 Spring 工厂进行Bean 的生产、依赖关系注入及 Bean 实例分发的“图纸”,J2EE 程序员必须学会并灵活应用这份“图纸”,准确地表达自己的“生产意图”。
它是一个或多个标准的XML文档,其ApplicationContext.xml是Spring的默认配置文件,当容器启动时找不到其他的配置文件时,则会尝试加载这个默认的配置文件。
四、Bean 的配置信息(元数据信息)由5个方面组成
1、Bean的实现类。
2、Bean的属性信息 比如:数据源的连接数,用户名和密码等等。
3、Bean的依赖关系 Spring根据依赖关系配置完成Bean之间的装配。
4、Bean的行为配置 比如:生命周期范围以及生命周期各个过程的回调函数等。
5、Bean的创建方式定义 主要说明是通过构造器还是工厂方法来构造Bean。
在Sping 框架中Bean的元数据之间的关系