spring框架的初级认识和详细讲解,图文结合

在这里插入图片描述
从百科上可以看出,spring框架是由软件开发的复杂性而创建的,可以极大的程度上减少我们的开发,另外就是降低耦合。

另外,我们的spring框架除了可以应用于web开发,还可以作用于Java应用的开发。

其实spring可以说是对以往的技术的整合

另外spring的jar包使用的时候,新旧版本也不同
在这里插入图片描述

另外在我们下载jar包的时候,他也是不同的
在这里插入图片描述
Spring框架的整个结构的结构信息

在这里插入图片描述
A、Test
对应spring-test.jar. Spring提供的测试工具, 可以整合JUnit测试, 简化测试环节.

B、Core Container
Spring的核心组件, 包含了Spring框架最基本的支撑.
Beans, 对应spring-beans.jar. Spring进行对象管理时依赖的jar包.
Core, 对应spring-core.jar, Spring核心jar包.
Context, 对应spring-context.jar, Spring容器上下文对象.
SpEL, 对应spring-expression.jar, Spring表达式语言.

C、AOP
面向切面编程, 对应spring-aop.jar.

D、Data Access
Spring对数据访问层的封装
JDBC, 对应spring-jdbc.jar. Spring对jdbc的封装, 当需要使用spring连接数据库时使用. spring-jdbc.jar需要依赖spring-tx.jar.
Transactions, 对应spring-tx.jar. 事务管理
ORM, 对应spring-orm.jar. spring整合第三方orm框架需要使用的jar包, 例如Hibernate框架.

E、Web
Spring对javax下的接口或类做的扩展功能.
spring-web.jar, 对Servlet, filter, Listener等做的增强.
spring-webmvc.jar, 实际上就是SpringMVC框架. 需要依赖spring环境和spring-web.jar.

IOC

控制反转
掌握完IOC,我们创建对象就不用new了,都是IOC帮助我们做了

那我们写框架的时候,都是按照以下顺序执行的

在这里插入图片描述
假设,我们在service中有一个实现类,UserServlceImpl,如果我们想在servlet中调用,就需要先new这个实现类,然后才能调用实现类中的这个方法,

那如果说。我们把service层的实体类的名字改掉。那么我们还得改servlet中new的对象名,否则不会起作用,那么如何解决这个问题呢,IOC就可以解决这个问题

在这里插入图片描述
那么如何帮助我们创建的,是一个配置文件,首先我们要写一个标签

在这里插入图片描述
这个对象就创建好了

那么我们如果想要引用的话,需要以下几步

在这里插入图片描述
获得对象就是IOC创建好的对象,我们直接拿来调用即可

导包

首次搭建纯spring框架,需要导入4个包
分别是解析标签的beans
context
核心包core
以及描述文件格式的expression

另外日志包,在spring5.1之前有一个日志包,属于第三方的loggon
5.1之后,spring就提供了一个jcl的日志包,我们就不用再导loggin

在这里插入图片描述

IOC的基本使用

在resources下创建并配置applicationcontext.xml
写入格式头

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    
</beans>

然后在内部配置bean,写入id和实现类的地址,然后再测试类中解析配置文件,
在这里插入图片描述
在这里插入图片描述另外获取xml对象的时候,我们也可以使用另外一种方法,比如我们使用的强转,太过麻烦,那么我们可以再getbean中写入接口.class,意思就是获得的对象是什么类型的

IOC的三种实现方式

无参构造

假设当我们创建了一个实体类,其中已经提供了有参无参构造,那么我们使用xml核心文件,创建对象的同时,就已经调用了无参构造

有参构造

在这里插入图片描述我们通过标签,constructor-arg的标签,进行属性的赋值,后面我们再调用的时候,会直接创建好,无论我们再测试类调不调用构造方法,都可以执行再在构造方法中的创建的语句。

但是如果当我们一个实体类中的有参构造发生多态的话,那么程序就会执行那个语句在前面就会先执行哪一个,哪怕我们再bean的属性赋值顺序一样,他也会遵循自己的规则,那么如果我们想要指定某一个东西的话,我们就会使用标签内的index方法,就是坐标的意思
在这里插入图片描述除了index属性,还有int和string

除了这个,还有一个ref,他是为对象赋值的

工厂设计模式

在这里插入图片描述我们假设创建了一个接口,写一个玩的方法,然后分别再男生女生的两个类中实现接口,同时都重写那个玩的方法,分别是男生玩的方法,另一个是女生玩的方法,我们一般调用这两个方法,都是new过后的结果,但是我们使用工厂

在这里插入图片描述
单独创建一个工厂类,里面通过我们后面输入的情况进行判断就行,然后我们通过基本的操作进行查询即可
在这里插入图片描述
另外我们的这个工厂是什么,是非静态的,那我们可以添加关键字static,,变成静态的,变成静态的好处是什么,就是我们再调用的时候,直接调用方法即可,不用再new对象了

如何用工厂模式实现IOC

同样我们在beans的标签中
在这里插入图片描述在这里插入图片描述没有赋值,也就是没有指定哪一个返回值,好方便在后台调用。
后面的那个,factory-methon指的是调用哪个方法。

那如果使用xml的配置的方式,我们在测试类如何调用?

我们只需要在解析xml文件之后,因为我们在xml文件中,把方法赋值给了p,那么我们引入p即可,同时写入接口即可,
在这里插入图片描述

如何调用静态方法

我们依然使用bean的方法,如果使用静态的方法,那么我们就不用再使用再调bean的对象了,直接factory-methon调用方法,也就是说不用在用bean去new对象了

在这里插入图片描述

DI依赖注入

简单一点来讲,DI就是给全局属性,或者是对象赋值的一种操作,

首先我们把依赖注入分开理解

什么是注入,注入就是通过外部给自己的属性(或者其他内容)进行赋值
依赖:一个类在另一个类中做 全局属性

其中类与类的关系有六种,分别是
在这里插入图片描述
DI的有哪些意义呢?
解除类与类之间的耦合性,给对象中的全局对象赋值的操作,

举例操作,创建一个教师类,一个班级类,然后再教师类,引入班级类,然后引入getset方法,以及tostring
这时,班级和教师就产生了一种类关系,就是依赖关系

DI的依赖注入也是有三种的
有参构造
set
自动注入

有参构造

在这里插入图片描述什么时候可以用value

编码不易 如有帮助到您 请支持一下 多谢

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DNCS高级工程师

你的创作是我打赏的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值