Spring官网
Spring全家桶的其他框架都是以SpringFramework框架为基础!
功能模块 | 功能介绍 |
---|---|
Core Container | 核心容器,在 Spring 环境下使用任何功能都必须基于 IOC 容器。 |
AOP&Aspects | 面向切面编程 |
TX | 声明式事务管理。 |
Spring MVC | 提供了面向Web应用程序的集成功能。 |
组件:可以复用的JAVA对象(unity封装的各种component组件)
之前需要new才能使用的类对象,需要自己赋值等等的操作 ,都改成使用spring帮我们处理,IoC容器帮助我们管理组件…
Spring充当组件管理角色(IoC
):
组件可以完全交给 Spring 框架进行管理,Spring框架替代了原有的new对象和对象属性赋值动作等!
Spring具体的组件管理动作包含:
配置地狱?!
IoC—Inversion of Control,即“控制反转”。
- 一种设计思想,IoC意味着将设计好的对象交给容器控制。
- 传统JAVA 是 对象内部通过new进行创建对象,是程序主动去创建依赖对象;
- 而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建
由 Spring 通过IoC容器来new,不再由我主动来new了。
之后我从容器里直接拿出对象用就好
普通容器
只能用来存储,没有更多功能。
复杂容器
Servlet 容器能够管理 Servlet(init,service,destroy)、Filter、Listener 这样的组件的一生,所以它是一个复杂容器。
名称 | 时机 | 次数 |
---|---|---|
创建对象 | 默认情况:接收到第一次请求 修改启动顺序后:Web应用启动过程中 | 一次 |
初始化操作 | 创建对象之后 | 一次 |
处理请求 | 接收到请求 | 多次 |
销毁操作 | Web应用卸载之前 | 一次 |
- SpringIoC 容器也是一个复杂容器。
它们不仅要负责创建组件的对象、存储组件的对象,还要负责调用组件的方法让它们工作,最终在特定情况下销毁组件。- 总结:
- Spring管理组件的容器,就是一个复杂容器,不仅存储组件,也可以管理组件之间依赖关系,并且创建和销毁组件等!
- Spring IoC 容器,负责实例化、配置和组装 bean(组件)。
- 容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。
- 配置元数据以 XML、Java 注解或 Java 代码形式表现。
- 它允许表达组成应用程序的组件以及这些组件之间丰富的相互依赖关系。
SpringIoc容器接口:
BeanFactory
接口提供了一种高级配置机制,能够管理任何类型的对象,它是SpringIoC容器标准化超接口!
ApplicationContext
是 BeanFactory
的子接口。它扩展了以下功能:
WebApplicationContext
BeanFactory
提供了配置框架和基本功能,而 ApplicationContext
添加了更多特定于企业的功能。 ApplicationContext
是 BeanFactory
的完整超集!类型名 | 简介 |
---|---|
ClassPathXmlApplicationContext | 通过读取类路径下的 XML 格式的配置文件创建 IOC 容器对象 |
FileSystemXmlApplicationContext | 通过文件系统路径读取 XML 格式的配置文件创建 IOC 容器对象 |
AnnotationConfigApplicationContext | 通过读取Java配置类创建 IOC 容器对象 |
WebApplicationContext | 专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中。 |
Spring框架提供了多种配置方式:XML配置方式、注解方式和Java配置类方式
主要是:配置类+注解方式
IoC控制反转 将 实例化对象控制权利 反转 交给 spring
因为 使用Ioc ,要用DI 管理内部数据引用
IoC容器
Spring IoC 容器,
IoC(Inversion of Control)控制反转
DI (Dependency Injection) 依赖注入
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="..." [1] class="..." [2]>
bean>
<bean id="..." class="...">
bean>
beans>
Spring IoC 容器管理一个或多个组件。这些 组件是使用你提供给容器的配置元数据(例如,以 XML
定义的形式)创建的。
id
属性是标识单个 Bean 定义的字符串。class
属性定义 Bean 的类型并使用完全限定的类名。//实例化ioc容器,读取外部配置文件,最终会在容器内进行IoC和DI动作
ApplicationContext context =
new ClassPathXmlApplicationContext("services.xml", "daos.xml");
ApplicationContext
是一个高级工厂的接口,能够维护不同 bean 及其依赖项的注册表。
通过使用方法 T getBean(String name, Class
,您可以检索 bean 的实例。
允许读取 Bean 定义并访问它们,如以下示例所示:
//创建ioc容器对象,指定配置文件,ioc也开始实例组件对象
ApplicationContext context = new ClassPathXmlApplicationContext("services.xml", "daos.xml");
//获取ioc容器的组件对象
PetStoreService service = context.getBean("petStore", PetStoreService.class);
//使用组件对象
List<String> userList = service.getUsernameList();
自己实例化对象方式: (不考虑反射)
使用构造函数实例化,有参/无参构造
工厂模式实例化,静态/非静态工厂
不同的实例化方式对象和组件IOC的配置方式也不同
单一架构
分布式架构
分布式架构,项目主要应用技术框架:SpringBoot (SSM), SpringCloud , 中间件等
框架 = jar包 + 配置文件 {jar拥有功能 + 配置文件定制化}
框架已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的API可以省去很多代码编写,从而提高工作效率和开发速度。