java复习第一天--Spring01

Spring复习第一天

转眼间毕业已经快半年了, 这半年在公司开发基本上都是再写JS代码以及使用Vue,为了适应新环境以及学习前端,在学校以及实习是所用的Java技术基本上都已经快忘了.所以想趁着还没忘干净,赶紧复习起来,顺便写下博客记录下,方便以后复习.加油!!

1. Spring是什么:

这个问题很简单,Spring就是春天啦 哈哈哈 嗝~, Spring是分层的javaSE/EE full-stack轻量级开源框架,以Ioc(Iverson of Control 控制反转) 和 Aop(
Aspect Oriented Programming) 面向切面编程 为内核

2. Spring的优势:

① 方便解耦,简化开发
根据spring提供的Ioc容器,将对象间的依赖关系交由Spring来控制,避免硬编码造成代码的过度耦合
② AOP编程的支持
通过Spring的AOP功能,可以进行面向切面编程,许多不易通过OOP(面向对象编程)实现的功能,可以通过AOP轻松实现
③ 声明式事物的支持
对比以前学习的JDBC通过Connection.setAutoCommit()开启事务Connection.Commit()提交事务单调烦闷,Spring可以通过配置文件或者注解轻松实现
④ 方便程序的测试
Spring很好的集成了junit 方便程序的测试
⑤ Spring集成了各种优秀的框架
⑥ Spring对javaEE的Api进行封装,降低了Api的使用难度

3. Spring的开发步骤:

① 导入Spring开发的基本坐标
② 编写接口以及实现类
③ 创建Spring的核心配置文件
④ 在Spring核心配置文件中配置对应的bean

说了这么多,开始撸代码了.今天复习下通过配置文件的方式使用Spring.
根据步骤来,首先在maven中导入一哈Spring的坐标
在这里插入图片描述
然后再编写接口以及实现类
在这里插入图片描述
然后创建Spring的核心配置文件(applicationContext),以及配置bean
在这里插入图片描述
最后我们就可以通过ApplicationContext类的ClassPathXmlApplicationContext传入核心配置文件的名称来使用Spring容器中的bean了.
在这里插入图片描述
使用Spring很愉快的调用的userDao中的save()方法

既然今天是使用配置文件的方式来复习Spring,那就再看看配置文件applicationContext中bean标签除了指定id(唯一标识),class(对应全类名)还有那些属性

第一个要说的就是通过scope来指定的作用域了,作用域一共有五个 其中最常用的两个就是Singleton(单例的) 以及 prototype(多例的), 如果不指定的话 默认使用的是Singleton(单例的) 那么这两个有什么区别呢? 实践是检验真理的唯一标准 试一哈就晓得了

首先在这个配置文件中配置一下scope 为singleton在这里插入图片描述

然后我们知道普通配置的bean对象,是通过无参构造来创建的,所以我们重写一下userDao的午餐构造,证明他被调用过
在这里插入图片描述
我想这就是光写了半年前端,不复习java的结果吧 啊哈哈哈,
在这里插入图片描述
好啦,接下来在测试类中看一下结果是怎么样的吧
在这里插入图片描述
当执行完加载配置文件,创建完Spring容器时,对象就已经创建了 再放开断点
在这里插入图片描述
执行完发现两个对象就是同一个

接下来再试一下prototype吧
在这里插入图片描述
spring容器创建完成后,并没有开始创建对象 只有当getBean方法调用是才会创建,而且是两个不同的对象

在这里插入图片描述
总结一下就是:

1)当scope的取值为singleton时

​ Bean的实例化个数: 1个

​ Bean的实例化时机: 当Spring核心文件被加载时,实例化配置的Bean实例

​ Bean的生命周期:

对象创建:当应用加载, 创建容器时,对象就被创建了

对象运行:只要容器在, 对象一直活着

对象销毁:当应用卸载, 销毁容器时,对象就被销毁了

2)当scope的取值为prototype时

​ Bean的实例化个数: 多个

​ Bean的实例化时机: 当调用getBean()方法时实例化Bean

对象创建:当使用对象时,创建新的对象实例

对象运行:只要对象在使用中,就一直活着

对象销毁:当对象长时间不用时,被 GC回收了

我们还可以通过init-method和destroy-method配置bean的开始方法以及销毁方法.如下图:
在这里插入图片描述
在这里插入图片描述
执行结果如下:
在这里插入图片描述

上面说到 bean实例化主要是通过无参构造的方法,那么除了无参构造还有几种方法呢? 一共是三种
① 无参构造
② 静态工厂
③ 工厂实例

无参构造就不再这里撸了 之前的测试都是用的无参构造,接下来我们来撸一下静态工厂和工厂实例.

静态工厂比较简单,配置下factory-method就可以了
在这里插入图片描述
在这里插入图片描述
工厂实例呢,因为调用的不是静态方法,我们需要先配置一个工厂的bean,然后通过factory-bean指定工厂bean,再通过factory-method指定方法
在这里插入图片描述
在这里插入图片描述
执行一下,也是成功的
在这里插入图片描述

可是为什么会创建两次对象呢? 因为我们创建了配置两个bean,而他们都没有指定scope,所以默认为singleton,上面说过singleton的生命周期为容器创建时对象就创建,所以当创建容器时,两个bean都创建啦.

今天先复习到这里了,哈哈 我的去来一把紧张而刺激的恰鸡了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值