【框架】120:spring框架初体验

目录

    • 一、SSM框架概述
    • 二、Spring配置信息
    • 三、Spring IoC快速入门
    • 最后

今天是刘小爱自学Java的第120天。

感谢你的观看,谢谢你。
【框架】120:spring框架初体验_第1张图片

今天学习内容安排如下:

  • 对ssm框架有一个了解。
  • IoC控制反转的xml配置管理,这也就是spring框架的核心知识点之一。
  • DI依赖注入的实现。

一、SSM框架概述

这个框架啊,估计就跟婚姻一样,也有七年之痒之说,以前呢也有一套框架叫SSH。

久而久之之后就觉得这也不好那也不好,于是就出现了一套新的框架叫SSM。

  • SSM框架:SpringMVC、Spring、Mybatis
  • SSH框架:Struts2、Spring、Hibernate

倒不是说SSH完全被淘汰了,但除了传统行业,基本很少用了,我们只学SSM,不学SSH。

框架的出现其实也就可以理解成为了更好地优化经典三层架构,使其更加地强大:

【框架】120:spring框架初体验_第2张图片

①Web层

我们前面一直使用的servlet也就是Web层,直接使用servlet虽然说也行,但是会有各种各样的问题。

所以就出现了对应的web层框架:SSH中的Strutes2、SSM框架中的SpringMVC。

我们后续要学的就是SpringMVC。

②Business业务层

也就是前面一直在说的service层,反正各种各样的名称,都是指业务层 。

③EIS持久层

也就是dao层、mapper层,数据持久层,操作数据库的,无外乎就是增删改查。

前面学过的jdbc、jdbcTemplate、mybatis都是和这层是相关的,SSH框架中的hibernate,还有后续要学的SpringDateJPA都是。

而我们今天要学的spring框架也就对应着业务层:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfo31z6k-1597191941173)(http://qes8avm3v.bkt.clouddn.com/233131301ssm%E6%A1%86%E6%9E%B6.jpg )]

无论是SSM框架还是SSH框架都有Spring,足以证明其重要性。

核心点主要有三点:Ioc控制反转、AOP面向切面编程、以及事务控制。

当然spring框架体系太庞大了,涉及到的知识体系挺多的,以后会一点点学习,也就是所谓的spring全家桶。

二、Spring配置信息

我们以前Java代码是如何写的?

【框架】120:spring框架初体验_第3张图片

service层和dao层都是一个接口对应一个实现类,调用时直接new一个实现类对象。

但是这样做有一个问题:

代码耦合度高,也就是说实现类如果发生了变化,要换成另一个,代码要修改。

而spring框架就能解决这个问题,其实现思路无外乎就是这么个思路:

工厂设计模式+反射 + xml配置文件

反射有一个特点:由它创建的类也好、方法也罢,亦或是属性,都是可以动态变化的。

如何动态变化,利用配置文件将类、方法名、属性字符串动态获取。

1Spring核心配置文件创建

创建步骤如下图:

【框架】120:spring框架初体验_第4张图片

在resources中new一个XML配置文件,选择Spring Config即可。

如果是以前,需要创建一个xml文件,再去spring官网copy配置文件模板。

这是得益于idea开发工具的便利,同时也从侧面说明了spring的重要性。

mybatis框架中配置文件模板不就需要我们自己去官网copy么?

2spring配置信息说明

【框架】120:spring框架初体验_第5张图片

bean,豆、咖啡豆的意思。这涉及到一个Java名称由来的一件轶事:

Java创始团队中,有一名成员在爪哇岛上曾喝过一种美味的咖啡。

于是就给这门计算机编程语言命名为Java,所以Java也被叫做爪哇,就是取自爪哇岛。

其图标也就是一杯热咖啡,而Java中非常重要的对象就是这种咖啡豆,也就是bean。

而spring框架中通过标签,就可以实现对Java对象的管理。

配置完成,那它是如何使用的呢?

三、Spring IoC快速入门

IoC全称为Inverse of Control,控制反转的意思,这是一种思想,能解决代码耦合问题。

1通过spring获取对象

【框架】120:spring框架初体验_第6张图片

①工厂设计模式

ClassPathXmlApplicationContext这一大串就是使用的工厂设计模式。

我大致说下对工厂设计模式的理解:

我们的项目是部署在服务器上面的,一般来说服务器基本是不会停的,为了用户体验需要保证一直运行。

项目运行后,我们只需要创建一次工厂对象,后续需要那个对象直接使用工厂获取。

因为服务器不停,对象就一直存在,所以如果对象用完了就需要释放资源,我们前面很多时候使用close()方法关流就是这么个道理。

而工厂对象不用释放资源,就可以一直用它。

再次强调:这一块的理解我并没有专门花时间去查资料学习,只不过随着自己不断地学习对其有了一定的见解,不一定准确,有问题后续会补充说明。

②反射

根据类的全限定名创建Class对象,再通过newInstance()实现该类的实例化。

我上述写的就是这么个实现思路,利用反射实例化对象,而参数就是由配置信息确定。

至于具体是如何确定的,需要去翻spring框架的源码,很复杂。

2依赖注入的实现

好,现在问题又来了:

spring获取对象确实解决了高耦合的问题,但是每次都要使用工厂获取对象太麻烦。

能不能只需获取一个对象,其它和这个对象相关的就自动完成获取了?

就需要使用到DI依赖注入了:

【框架】120:spring框架初体验_第7张图片

通过property子标签,根据类中的setter方法进行依赖注入,需要使用到两个属性:

  • name:即setxxx方法中的xxx。
  • ref:引用哪一个对象。

依赖注入它有一个使用前提,就是被注入的对象中需要有set方法。

这样能有什么效果呢?

如果没有依赖注入的话,需要多次spring工厂获取对象;有了依赖注入的话,只需要一次获取对象,其相关的对象也就完成了初始化。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

你可能感兴趣的:(零基础自学Java,java,spring,设计模式)