Spring框架(初识Spring)

目录,更新ing,学习Java的点滴记录

  目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

Spring知识

  一丶SpringIOC初步认识↓↓↓
第一篇---->初识Spring
  二丶SpringIOC深入↓↓↓
第二篇---->深入SpringIoC容器(一)
第三篇---->深入SpringIoC容器(二)
  三丶装配SpringBean↓↓↓
第四篇---->依赖注入的方式
第五篇---->基于xml装配Bean
第六篇---->基于注解装配Bean
第七篇---->Spring Bean之间的关系
第八篇---->SpringBean的作用域
第九篇---->Spring 加载属性(properties)文件
第十篇---->Spring表达式(SpEL)
第十一篇---->Spring在xml中配置组件扫描
  四丶面向切面编程↓↓↓
第十二篇—>认识SpringAOP及底层原理
第十三篇—>使用@AspectJ注解开发AOP
第十四篇—>使用xml配置开发AOP
  五丶Spring中数据库编程↓↓↓
第十五篇—>数据库编程JdbcTemplate
  六丶Spring事务管理↓↓↓
第十六篇—>Spring事务管理初识
第十七篇—>编程式事务和声明式事务
第十八篇—>事务ACID特性
第十九篇—>事务传播行为
第二十篇—>事务隔离级别

一丶Spring框架初识

  • 说明:
      第一部分前两节涉及到Spring的代码大家看看就可以,如果是初学者的话,在第一部分第4节HelloWorld会以一个项目引出,让大家先认识一下Spring的基本项目,详细内容在第二部分会超详细解释
      开发工具:IDEA
  • Spring框架是Java应用最广的框架.它的成功来源于理念,而不是技术本身.它的理念包括IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)

1 Spring Ioc简介

  • IoC是一个容器,在Spring中,它认为所有的Java资源都是Java Bean,容器的目标就是管理这些Bean和它们之间的关系.所以在SpringIoC里面装载的各种Bean,也可以理解为Java的各种资源,包括Java Bean的创建,事件,行为等,它们由IoC容器管理.除此之外,各个Java Bean之间会存在一定的依赖关系,比如学校依赖于学生和老师组成的,假设学生和老师都是Java Bean,那么显然二者之间形成了依赖关系,老师和学生有教育和被教育的关系.这些Spring IoC容器都可以对其管理.只是Spring IoC管理对象和其依赖关系,采用的不是人为主动的创建,而是由Spring IoC自己通过描述创建,也就是说Spring是依靠描述来完成对象的创建及其依赖关系的.
  • 比如汽车,将汽车类定义为一个接口,假设有两类汽车–电动汽车和燃油汽车,如下图
      在这里插入图片描述
  • 使用者在使用汽车出行的时候,有两种汽车可以选择,具体该怎么选择呢?建设我们现在要使用电动汽车出行
      在这里插入图片描述
  • 使用Car car = new ElectricVehicle();后,接口Car就和具体类ElectricVehicle绑定在一起了(多态的展现),但是弊端显而易见:如果要使用其他类型汽车出行,比如这里的燃油汽车,就需要修改代码了.这种情况Socket接口与其实现类ElectricVehicle耦合了,如果将来不用电动汽车了,而要使用燃油汽车,那么代码就要做如下修改:
      在这里插入图片描述
  • 如果将来会产生一种更加高效的新能源汽车,岂不是还要进行修改吗?在互联网的大项目中,如果要对这样类似的代码进行不断修改,那么对于整个系统的可靠性可是非常危险的事情,Spring IoC可以解决这个问题.
  • 首先,我们不用new的方式创建对象,而是使用配置的方式,然后让Spring IoC容器自己通过配置去找对应的汽车类.用一段xml描述汽车和用户引用电动汽车,如下图:
      在这里插入图片描述
  • 在该xml配置文件中,只需要把配置切换为:
      在这里插入图片描述
  • 这样切换后,就可以实现往用户中注入燃油汽车,切换汽车的实现类非常方便,这个时候汽车Car接口就不依赖任何的汽车,而通过配置进行切换
      在这里插入图片描述
  • 上图中配置信息是"我要电动汽车",就相当于xml文件中进行了用户和汽车的依赖关系配置,这时Spring IoC就只会拿到电动汽车,然后通过汽车接口注入给使用者,提供给使用者使用.换句话说,这时一种被动行为,而需要的资源(Bean)通过描述信息就可以得到,其中的控制权在Spring IoC容器中,它会根据描述找到使用者需要的资源,这就是控制反转的含义.
  • 好处是Car接口不再依赖于某个特定的实现类,需要使用某个实现类时我们通过书写配置信息就可以完成了.这样想修改或者加入其它资源就可以通过配置来完成,不再需要再用new关键字进行创建对象,依赖关系也可以通过配置完成,从而完全可以即插即拔地管理它们之间的关系.
  • 你不需要主动创建或者去寻找资源,只要向Spring IoC容器描述所需资源,Spring IoC自己会找到你所需要的资源,这就是Spring IoC的理念.这样做就将Bean之间的依赖关系解耦了,更容易写出结构清晰的程序.除此之外,Spring IoC还提供对Java Bean生命周期的管理,可以延迟加载,可以在其生命周期内定义一些行为等,更加方便有效的使用和管理Java资源,这就是Spring IoC的魅力.

2 Spring AOP

  • IoC的目标就是为了管理Bean,而Bean是Java面向对象(OOP)的基础设计,比如声明一个用户类,汽车类都是基于面向对象的概念.
  • 有些情况下面向对象是没有办法处理的.比如,生产部门的订单,生产部门,财务部门三者符合OOP的设计理念.订单发出,提交给生产部门去审批,生产部门审批通过,然后通知财务部门准备付款,但是财务部门发现订单的价格超支了,需要取消订单.显然取消订单这件事已经不只是影响财务部门了,还会影响生产部门之前所做的审批,需要将它们作废.我们把预算超支这个条件称为切面,它影响了订单,生产部门和财务部门3个OOP对象.在现实中,这样的切面条件跨越了3个甚至更多的对象,并且影响了它们的协作.所以只用OOP并不完善,还需要面向切面的编程,通过它去管理在切面上的某些对象之间的协作.
      在这里插入图片描述
  • 上图中,实线是订单提交流程,虚线是订单驳回流程,影响它们的条件是预算超支,这是一个切面条件
  • Spring AOP常用于数据库事务的编程,很多情况如同上面的例子,做完第一步数据库更新后,不知道下一步是否会成功,如果下一步失败,会使用数据库事务的回滚功能去回滚事务,使得第一步的数据库更新也作废.在Spring AOP实现的数据库事务管理中,是以异常作为消息的.在默认情况下(可以通过Spring配置修改),只要Spring接收到了异常信息,它就会将数据库事务回滚,从而保证数据的一致性.这样我们就知道在Spring的事务管理中只要让它接收到异常信息,它就会回滚事务,而不需要通过代码来实现这个过程.下面用一段伪代码来进行说明,如下:
      在这里插入图片描述
  • 在上述代码中,我们完全看不到操作数据库的代码,也没有复杂的try-catch-finally语句.在实际中,Spring AOP编程也是如此,这些东西都被Spring屏蔽了,不需要关注它,只需要关注业务代码,知道只要发生了异常,Spring回滚事务就足够了.事务当然是很复杂的,但是Spring提供了隔离级别和传播行为去控制它们,有了Spring的这些封装,开发人员就可以减少很多的代码和不必要的麻烦.

3 一些准备资源

  • Spring官网:https://spring.io/projects/spring-framework
  • 官方各版本jar包下载地址:https://repo.spring.io/libs-release-local/org/springframework/spring/,关于jar包中的目录结构解释会在第二部分开头说明
  • 官方源码各版本源码包下载地址:https://github.com/spring-projects/spring-framework/tags
  • 后续案例中使用到的包,如果有其他添加会进行说明,
     下载方式:网盘链接(版本为4.1.6,包含日志包)-----链接:链接:https://pan.baidu.com/s/1BB1XSylXzZ8_9pj_zyG9hA 提取码:bvby
     如果感觉网盘下载太慢时,可以使用上面提供的jar包和源码包的网址下载,下面给出下载jar包的示例,源码包类似,但是需要自己额外下载一个Spring依赖的日志包commons-logging,再提供一个网盘链接,这个只包含这个jar包,内容很小,下载很快–链接:https://pan.baidu.com/s/1ZRFrMs4XhzLggngU71lX6w 提取码:5vjj
      在这里插入图片描述
      在这里插入图片描述

4 HelloWorld项目

  • 创建项目–这里我创建一个空的Project,然后以此为基础对每一个Spring的介绍创建一个新的Module来写代码
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 添加jar包到项目环境中—按常规惯例,创建一个lib文件夹,放置jar包然后添加为library
      在这里插入图片描述
      在这里插入图片描述
      在下载的jar包的文件目录下,找到下面五个jar包已经Spring依赖的commons-logging.jar包
      在这里插入图片描述
      在这里插入图片描述
      复制这5个jar包到lib目录下,然后右键选中lib,选择add as library
      在这里插入图片描述
  • 在src下创建一个Spring的全局配置文件:
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      如果你创建的配置文件出现了这样的提示信息,就说明该配置文件并没有关联到项目中,需要进行处理,操作不再赘述,详情见新建Spring全局配置文件出错
  • 创建HelloWorld类
      在这里插入图片描述
  • 在全局配置文件中配置bean
      在这里插入图片描述
  • 创建测试类,进行测试
      这里需要强调一点,在创建SpringIOC容器的时候指定的配置文件是applicationContext.xml,其实这个文件并不一定非得叫这个名字,也就是说我们可以在不同情况下,创建多个文件名不同的文件,只需要在代码中创建SpringIOC容器时指定对应文件即可
      在这里插入图片描述
      特别的,如果在最后运行代码时出现了:Error:java: 无效的源发行版: 12的错误,解决方案—>Error.java:12解决
  • 通过这样一个简单的项目,你可能对Spring的最基本的配置有了一点点认识
  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值