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

作者: 刘小爱 | 来源:发表于2020-08-25 10:37 被阅读0次

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

    感谢你的观看,谢谢你。

    image

    今天学习内容安排如下:

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

    一、SSM框架概述

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

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

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

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

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

    image

    ①Web层

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

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

    我们后续要学的就是SpringMVC。

    ②Business业务层

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

    ③EIS持久层

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

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

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

    image

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

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

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

    二、Spring配置信息

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

    image

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

    但是这样做有一个问题:

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

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

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

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

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

    1Spring核心配置文件创建

    创建步骤如下图:

    image

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

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

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

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

    2spring配置信息说明

    image

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

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

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

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

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

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

    三、Spring IoC快速入门

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

    1通过spring获取对象

    image

    ①工厂设计模式

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

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

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

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

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

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

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

    ②反射

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

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

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

    2依赖注入的实现

    好,现在问题又来了:

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

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

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

    image

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

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

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

    这样能有什么效果呢?

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

    最后

    谢谢你的观看。

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

    相关文章

      网友评论

        本文标题:【框架】120:spring框架初体验

        本文链接:https://www.haomeiwen.com/subject/aaegdktx.html