抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Part1. Spring是什么?

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。——【IBM简介】

This is a picture without description

Part2. 简单认识IOC

Spring的核心主要就是两个概念IOCAOP,搞定这两个概念是进一步学习Spring开发的基础,这里先认识IOC。

IOC(Inversion of Control,控制反转),是一种开发思想,而DI(dependency injection,依赖注入)是这个思想在Spring中的具体实现。即我们只是学习DI来使用这个思想即可

平时我们需要使用一个对象时,都是new Object(),是人为的自己new一个对象。而使用Spring框架的IOC,是我们借助Spring容器通过DI注入达到new Object()的目的。

简单的说,就是我们把所有的Class交给了Spring容器,这个容器就是一个存储仓库,当我们需要某个对象的时候,我们就找到这个仓库(Spring容器),问这个仓库即可。划重点

这个对所需对象的操控的转变由我们人为的自己new变成了问Spring容器要,我们只是需要的时候问它要即可,不需要new的过程(这个过程由Spring容器来做)。这就是IOC控制反转。而问Spring容器要的方式,就是DI依赖注入



从上述的简单IOC认识,我们可以从应用的角度来认识和学习————假设您现在要使用Spring。
一开始就可以发现的问题有:1. 如何开始使用Spring? 2. 如何创建这个Spring仓库? 3. 如何使用这个Spring仓库来获取到我们想要的对象?围绕着这三个问题来简单学习一下Spring。

Part3. Spring环境搭建

第一个问题,其实就是Spring框架“安装”的问题,这是开发的基础。

创建一个空的maven项目,在pom.xml中导入Spring框架包,例如下面的配置。导入了包之后,Spring框架就搭建好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
</dependencies>

到这里,第一个问题就解决了。现在可以开始正常的开发了。就是简单导个包??是的,简单认识。

Part4. Bean和创建Spring容器

在上面我们说到,我们把所有的Class都交给了Spring容器,也就是第二个问题——如何创建这个Spring仓库?

到这里,我们引入Bean的概念。bean是什么?

Bean是什么??
Bean是一套约定或规范。具体的说Bean:
1、所有属性为private
2、提供默认构造方法
3、提供getter和setter
4、实现serializable接口

简单的说:由spring容器管理的对象都是Bean对象,也是普通的java对象。

码两篇文章【javaBean上】【javaBean下】

这里我们不深究bean,就知道有这东西就行。我们需要做的是在maven文件架构下的resources目录下新建一个Spring XML配置文件(如下,文件名为Beans.xml)。在Spring中编辑一个Bean(如下)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">

<!--
定义一个bean
id:bean的唯一标识,可以通过这个标识从容器中获取这个bean对象,可以自己随便定义;
class:这个bean的类型,填入类的完整路径。
-->
<bean id="helloWorld" class="demo1.Hello"/>
<!-- 这里要知道bean有id和class属性即可 -->
</beans>

到这里,一个简单的Spring容器就创建好了,第二个问题解决。

Part5. 使用Spring容器

第三个问题,如何通过Spring容器获取到我们想要的对象?这里可以使用理解为“模板”。

在新的类中使用:

1
2
3
4
//1.创建ApplicationContext容器,给容器指定需要加载的bean配置文件,它会自动从classpath中查找指定的XML配置文件。基于xml的容器有了,想要什么就get。
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
//3.从容器中获取需要的bean
Hello he = context.getBean("helloWorld",Hello.class);

如注释所述,这里已经使用Spring容器获取了对象he了,其中出现的两个helloWorld要一一对应。SpringIOC部分大概就是这样子了吧。

Part6. 补充回顾

这里对上述的流程做一个简单的补充和总结。

  1. Part4
    1. Bean的使用其实不用像规范那么严格;
    2. 这里展示的是装配Bean的一种方式——xml显式配置。另外两种方式是1通过注解配置和通过javaconfig配置。每一个方式都需要且值得深入学习。先讲其他配置的真的过分,虽然其他的最为推荐和常用。
  2. Part.5
    1. 初始化一个Spring容器,根据装配Bean的方式的不同而有些许差异。首先对象肯定是容器ApplicationContext,差异在于new的对象不同。其他Spring容器的使用方式一致。
  3. 这些都是IOC要好好学习的东西。不同的教程教授的深度和广度不同。

Part7.关于学习Spring的一些tuxue感叹

不得不说,自学,一如既往,真的是太难了。从寻找教学资源、到环境配置、到运行处处error、学到一半发现教程不合适or教程讲到的比较少-继续找教程、缺少足够的demo、触及知识盲区卡顿补漏、……、每一个都是你阻止前进的一大拦路虎。所以,找到一个适合自己的小白教程真的是太难了😭😭。

但是,这个过程经历下来,你也总会有收获,几乎每一步都会有,只是学习进度有一点慢而已,何止一点😡😡。这个收获是多方面的,比如在要学习的领域上,肯定有了进步;比如在踩坑的问题上,可能下一次就不会再踩了;比如你又学到了某些奇奇怪怪的知识;等。

最后,有一个经验,就是所有的这些“二手教程”,真的是二手。不同的作者有不同的水平、不同的理解、不同的侧重点等,所以写出来的教程也就各具特色,各领风骚。但是经过人家消化的东西,要么不够全、不够官方或者误解……。总之,多找几份教程,对比着看,对比着学,虽然慢,虽然难,虽然麻烦,但至少自己能够理解、学习得更全面。可能这就是学习吧,多花时间多努力吧。💪💪提升自学能力。

Why not official document ?? 功力不够,够也不需要什么入门教程了

这篇博文是Spring学习的从输入到输出的转变。是对前面学习的简单总结输出,如果您发现哪里问题or错误,还请指出,3Q🌹🌹,撒花~~~~★,°:.☆( ̄▽ ̄)/$:.°★



相关推荐

参考文献

评论

Gitalk评论系统对接至Github Issue,随心评论🐾🐾.....