Spring容器|学习笔记

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 快速学习 Spring容器

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术 Spring容器学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15961


Spring容器


spring 的容器是 spring 的核心的部分, spring 容器主要的作用是帮助程序员处理大量的繁琐事务,所以程序员只需要用代码去实现它所关注的业务,而不需要去处理其他的事情。

在 spring 的框架中间,程序员其实是不需要自己去创建对象,同时也不需要去创建对象的关联和建立对象的关联,所有的这些东西都只是需要通过配置的信息告诉

spring 的容器,有 spring 的容器负责去创建对象,去建立对象的关联。

spring 的容器不仅仅会创建对象,而且能建立对象的关联,而且它还能够管理这些

对象的全生命周期,从创建到销毁。

例如说系统的服务层分成了用户服务、运费服务、权限服务以及商品服务四个对象。那知道这四个对象是有相互关联的,比如说权限的服务和用户服务是有人密切的关联的。

然后只需要提供给Spring的容器这四个类的代码,用注解或者配置文件告诉 spring 容器这四个服务之间的关联和关系,那 spring 容器在启动的时候,它就会负责创建好这四个对象,而且把这些对象进行相互的关联,那这样就可以直接从 spring 的容器中间拿到这些对象,而且可以很方便的去使用它。

从刚才可以看到需要用配置信息告诉 spring 的容器如何去创建对象以及如何去建立对象的关联,那当然可以有多种方式去告诉 spring 的容器这些配置信息。在最早期的时候会采用 xml ,xml 的一种配置信息,它的好处在于说它的配置信息跟代码是分离的,是一个放在外部的独立文件,所以说可以直接去修改配置,而不需要去编

译代码。

那当然弊病就是 xm ml 的配置比较繁琐,而且它的配置信息跟代码是分离的,同样也没办法去检查出 xamr 中间配置的错误,只有当序运行到使用配置的这一部分的时候才会发现这个配置的错误,这样对测试其实产生了很大的压力,所以说在后期

主要采用了另外两种方式来告诉 spring 的容器的配置信息。

它就是可以用 JAVA 代码来写配置信息,也可以用注解来写配置信息,那当然知道因为 JAVA 代码和注解是在这个 JAVA 语言中间是可以去分析出,在写代码上就能

分析出它的错误。

所以说在测试的时候也可以用很多工具去判断说测试是否有覆盖到了这部分的代码

或者注解,所以说这是目前来说主流来写配置信息的方式。

那当然用JAVA代码或者用注解来写配置还是会需要写很多的配置,所以在 spring 中间提供了一个 spring Boot ,大量采用了这种默认的配置,减少了这些配置的工作量,所以很多的配置不再需要书写了,可以用 spring Boot 默认方式去指定,然后要写的只是特别的不能用默认去表示的这些配置,同时需要用JAVA代码或者说用注解来告诉 spring 的容器。然后就来看几个简单的用注解告诉  spring 容器的例子,前面说了先要告诉 spring 的容器,说这个类是要有 spring 的容器创建出来的对象。然后可以用注解的方式也可以用代码的方式,那在课上讲解的例子用注解的方式,也就是在类前面加一个注解,那 spring 的容器在读到这样的一个注解的时候,它就知道说这个类是需要创建出来的对象,对象创建出来在 spring 中间是有一个 ID的,ID 当然可以作为一个属性告诉它,但是很多时候都不会去写这个属性,

那它的 ID 就默认为首字母是小写的类名。

现在还有很多其他的名字告诉 spring 的容器这是一个需要创建的对象。比如说对于控制器的对象,因为它是一种很特别的对象,它要负责处理的 request HTTP

response的请求,所以需要在类前面加上一个 controller 的标签来告诉 spring  的容器这是一个控制器的对象。

图片2.png

那对于其他层的对象,其实它就是一个普通的 spring 的对象,比如说服务层的对象,比如说数据存储层的对象,当然可以用 component 来标识说这就是一个spring 的普通的对象,但是为了让代码的可读性更好,spring 的框架提供了service的标签分别用来描述 service 的对象或者数据存储层的对象。

前面说了 spring 的容器是 spring 的最核心的部分,spring 的框架提供了两种容器,分别是 Bean factory 和 application Context,Bean factory 是 spring 框架的最基本的容器,前面说的读取 Bean 对象的配置信息,把这个对象创建出来,把它对的类画出来加载上来,然后把对的 Bean 对象实例画出来,并且维护这些 Bean 对象之间的关联,然后要负责销毁这些Bean 对象,这些事情都是由 Bean factory来完成的,Bean factory 的这个逻辑是第一次访问到一个对象的时候,它才会创建

对象。

在大多数情况下,不会使用 Bean factory 这样的类对象,而会使用 application Context,application Context 是由 Bean factory 派生出来的容器,所以都知道派生的概念,所以 Bean factory 所有具备的特性 application Context 也具备,但是它在 Bean factory 的这些特性的基础上增加了一些高级的功能,比如说 resource source,国际化的这个接口以及 loader,它可以去加载外面资源的接口,比如说还有一些 the published 这样的一些接口,应用事件发布的这些接口,所以说它是在Bean factory 的基础的功能基础上增加了很多面向实际的这些功能,那它与 Bean factory 最大的一个不同是在于说它不是在第一次使用对象创建对象,而是在容器启动的时候就会创建所有的对象,就是在配置定义中间它所有找到的对象都会创建出来。

那这样其实可以有效的提高系统运行的效率,当系统启动的时候可能稍微慢一点,当系统启动起来以后,所有的对象都已经创建出来,所以用的时候就不需要再去花

时间创建对象了,直接就可以使用了。

相关文章
|
2天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的高校本科生学习成长记录系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的高校本科生学习成长记录系统的详细设计和实现(源码+lw+部署文档+讲解等)
9 1
|
2天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的编程语言在线学习平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的编程语言在线学习平台的详细设计和实现(源码+lw+部署文档+讲解等)
10 1
|
3天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的程序设计基础视频学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的程序设计基础视频学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
6 1
|
4天前
|
XML Java 数据库连接
Spring6(二):IoC容器(2)
Spring6(二):IoC容器
13 2
|
4天前
|
XML Java 数据格式
Spring6(二):IoC容器(3)
Spring6(二):IoC容器(3)
10 1
|
4天前
|
XML Java 数据格式
Spring6(二):IoC容器(1)
Spring6(二):IoC容器(1)
13 1
|
7天前
|
Java Spring 容器
使用ContextLoaderListener初始化Spring容器
使用ContextLoaderListener初始化Spring容器
|
8天前
|
消息中间件 安全 Java
学习认识Spring Boot Starter
在SpringBoot项目中,经常能够在pom文件中看到以spring-boot-starter-xx或xx-spring-boot-starter命名的一些依赖。例如:spring-boot-starter-web、spring-boot-starter-security、spring-boot-starter-data-jpa、mybatis-spring-boot-starter等等。
19 4
|
1天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的大学生党务学习平台小程序附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的大学生党务学习平台小程序附带文章源码部署视频讲解等
5 0
|
1天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的英语学习交流平台小程序附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的英语学习交流平台小程序附带文章源码部署视频讲解等
5 0