Spring5_01_入门案例
Spring5 入门案例
IOC 是Spring框架的核心内容.使用多种方式完美的实现了IOC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置IOC.
Spring容器在初始化时候先读取配置文件,根据配置文件或者元数据创建与组织对象存入容器中,程序使用的时候再从IOC容器取出需要的对象。
了解了 Spring是一个包含众多方法的IOC容器,也知道spring的核心功能就是将对象存放到Spring中,再将对象从Spring中取出来.
接下来我们创建一个Spring项目来实战一下,究竟Spring的IOC思想是怎么回事,怎么创建一个Spring项目,怎么将对象存放到Spring中,又怎么将对象从Spring中取出来..接下来我们逐一讲解.
Spring的创建和使用
如何创建Spring项目呢?
- 首先我们要先创建一个Maven项目
- 引入框架支持-->spring的依赖 spring-context 和 spring-beans
- 然后创建一个启动类
创建一个Spring项目
1.创建一个Maven项目
我们第一步是创建一个Maven项目
2.添加Spring依赖
1 |
|
加载之后就会出现相应的jar包
这个就是我们下载的jar包.
- 我们不是只引入了spring-context依赖 和 spring-beans依赖么,为什么会下载这么多jar包??
这是因为我们引入的这些依赖,还依赖着其他的jar包.
spring-context : spring-context就代表spring本身(spring的上下文)
spring-beans : 代表管理对象的模块(因为我们要往spring里面存bean对象和取bean对象,所以要引入spring-beans依赖 在spring中对象就是bean,(对象会重复使用)).
3.添加一个启动类
- 为啥要添加启动类呢?? 我记得Servlet不需要创建启动类啊.
因为我们现在创建的是Spring core项目,也就是最基础的spring项目,最基础的项目是没有Web模块的,所以需要添加启动类.
而对于Servlet来说,它是一个Web基础,需要配置Tomcat来使用,Servlet是一个Web技术(或者Web框架),它是在Tomcat服务器上运行的,对于Tomcat来说它是内置了启动类,也就是Tomcat源码中会有一个main方法的.
1 |
|
我们创建好一个Spring项目之后..我们如何使用Spring呢??
将bean存放到Spring中
如何存储呢?? 我们需要以下几步
- 先要有一个bean对象(bean在Java中就是对象,在Spring中叫做bean).
- 然后再将bean对象存放到Spring当中
1.创建一个bean对象
1 |
|
2.将bean存放到spring中
- 将bean存放到spring当中,首先我们要添加配置文件.放到resource目录中.
1 |
|
- 往spring中注册一个bean.
往spring中注册一个bean也就是在配置文件XML中,添加一个bean标签,就代表要往Spring中注册一个bean,至于注册哪一个bean(也就是哪一个类),需要通过bean标签的属性来指定.
1 |
|
- 在spring-config 配置文件(XML)中加入一个bean标签就代表往spring容器中注册一个bean对象
- bean标签有两个属性 id 和 class
- id 代表这个bean对象的标识 ,一般为类名的小驼峰形式
- class 可以定位到类的存储位置,可以定位到唯一的对象. 也就是你要把哪一个类的对象添加到spring当中; 包名+类名
从Spring中取出bean
既然我要从spring中取出bean,首先我得先要有一个Spring对象
获取到Spring上下文对象
得到spring上下文对象有两种方式可以获取到 一个是 ApplicationContext 一个是BeanFactory
首先我们来使用ApplicationContext来获取Spring上下文对象
1 |
|
从Spring中获取bean对象
获取bean有很多方式...
通过 bean的id 来获取到Bean对象
1 |
|
优点 : 通过 bean的id来获取bean对象的时候,如果有多个bean对象的时候可以通过id来区分我到底是获取哪一个对象.
缺点 : 通过bean的id来获取bean 缺点就是需要进行强转,如果为null的时候就会报异常.
通过 bean的类型来获取bean对象
1 |
|
缺点 : 使用类型来获取bean的缺点就是如果有多个bean对象的时候,就无法进行区分bean了.
通过bean的id + 类型 来获取 bean
--->这个是最推荐的做法.
1 |
|
ApplicationContext VS BeanFactory
BeanFactory也是一种获取bean的方式.
1 |
|
显然这个是已经是很老的,不推荐使用.
那ApplicationContext 与 BeanFactory的区别是什么呢?
相同点 : ApplicationContext与BeanFactory都是可以获取到Spring上下文对象的.
不同点 :
- 继承关系和功能上 :
ApplicationContext 是 BeanFactory 的 一个子类.ApplicationContext具备了BeanFactory的所有功能和能力,BeanFactory只具备了最基础访问Bean的能力,ApplicationContext具有更多的独有的功能,比如国际化支持,资源访问支持等....
- 性能和加载方式上 :
BeanFactory是比较老派的类了,由于以前硬件设备和空间不足,所以,BeanFactory按需进行加载,也就是当使用Bean的时候,再去加载,更加轻量,节省资源,缺点是第一次加载Bean比较慢.
而ApplicationContext由于资源充足,采用一直空间来换时间..,它是一次性加载所有的bean(在创建对象的时候就将所有的bean进行初始化创建),所以后面再去访问的时候,就非常的块,性能高.但可能会造成资源的浪费。
参考:https://blog.csdn.net/m0_61210742/article/details/127720385