项目实训 7 学习Spring(1)

320 阅读3分钟

一、IoC容器:

1.1:Spring IoC容器和Bean简介:

Bean(一个class):1、所有属性为private;2、提供默认(无参数)构造方法;3、提供getter和setter函数

反转控制(IoC)原则的 Spring 框架实现。

BeanFactory接口提供了一种高级配置机制,能够管理任何类型的对象。 ApplicationContext是BeanFactory的子接口。ApplicationContext添加了更多企业特定的功能。ApplicationContext是BeanFactory的完整的超集。

反转控制(IoC):将对象的控制权提交给Spring IoC容器,让他去创建对象。

Bean 是由 Spring IoC 容器实例化,组装的。Bean 及其之间的依赖关系反映在容器使用的配置元数据中。(容器保证了对象创建的一次性,仅会创建一次,提供对同一个对象的引用)

1.2:容器概述:

org.springframework.context.ApplicationContext接口代表 Spring IoC 容器,并负责实例化,配置和组装 Bean。容器通过读取配置元数据来获取有关要实例化,配置和组装哪些对象的指令。配置元数据以 XML,Java 注解或 Java 代码表示。

ApplicationContext接口的实现:通常创建ClassPathXmlApplicationContext或FileSystemXmlApplicationContext的实例。

尽管 XML 是定义配置元数据的传统格式,但是您可以通过提供少量 XML 配置来声明性地启用对这些其他元数据格式的支持,从而指示容器将 Java 注解或代码用作元数据格式。

image.png

1.2.1:配置元数据:

配置元数据是表示告诉Spring IoC容器将要如何实例化,配置和组装应用程序中的对象。

基于 XML 的配置元数据,里面包含着元素以及内部元素。这些 bean 定义来自于组成应用程序的实际对象。

基于XML的配置元数据的基本结构:

image.png

(1) id属性是标识单个 bean 定义的字符串。(标识这个bean)

(2) class属性定义 bean 的类型并使用完全限定的类名。(标识该bean引用的是哪个bean的class

image.png

property标签是调用bean类中相应的setter方法为bean类中的属性赋值。name并不是表明属性的名字,代表的是set***()(在set中第一个为大写)方法中*(name中填写时第一个*要转化成小写)。ref填写的该属性所属于的另一个bean(同一个XML的其他bean)。

id和ref元素之间表达了协作对象之间的依赖性,容器会根据这种依赖性自主按顺序创建对象,比如先创accountDao对象和itemDao对象然后再创建petStore对象。(满足一个对象只会创建一次)

使 bean 定义跨越多个 XML 文件可能很有用。通常,每个单独的 XML 配置文件都代表体系结构中的逻辑层或模块。

image.png

使用一个或多个元素从另一个文件中加载 bean 定义。

所有位置路径都相对于进行导入的定义文件,因此services.xml必须与进行导入的文件位于同一目录或 Classpath 位置,而messageSource.xml和themeSource.xml必须位于导入文件位置下方的resources位置。

1.2.2:实例化容器:

ApplicationContext context = new ClassPathXmlApplicationContext ("services.xml", "daos.xml");

其参数是配置元数据XML文件的位置路径。

ClassPathXml:XML位于头文件处。

FileSystemXml:使用Input Stream去寻找XML的位置路径。

1.2.3:使用容器:

ApplicationContext是高级工厂的接口,该工厂能够维护不同 bean 及其依赖关系的注册表。通过使用方法T getBean(String name, Class requiredType),您可以检索 bean 的实例。

name和class即bean标签中的name与class。