Spring基础

什么是框架

高度抽取可重用代码的一种设计;具有高度的通用性

把一些工具抽取出来形成框架,在同类型业务中可以通用,再次使用时只需要更换一些其他业务即可。

多个可重用模块的集合,一起形成在某个领域的整体解决方案。

   在盖房子中,javaweb就是主人需要从头到尾全部自己干
   框架就是主人雇一些工人,水泥工人,设计工人,地板工人,主人只需要命令使用工人即可。

框架是一个半成品软件,根据业务需求进行动态组合

jar包是就是一种工具类

什么是Spring框架(开发人员的春天)

一个开源的容器框架;可以通过Spring来管理所有的组件(类);很多功能能够根据容器的简单配置来实现;

  • 具有某种功能的类,称之为组件。

Spring的核心功能:IOC和AOP;

Spring的优点:

1.非侵入式:基于SPring开发的应用程序中的对象可以不依赖于Spring的API。项目不依赖于API

2.依赖注入:IOC / DI

3.面向切面编程:AOP

4.容器:Spring是一个容器,包含并且管理应用对象的生命周期

5.组件化:Spring中所有的功能,都是抽取成了单独的组件,用了加上不用了删掉,灵活性很高,复杂性低,导包简单

6.一站式:用好一个Spring,可以熟悉其他的所有框架。Spring自身也提供了表述层的SpringMVC和持久层的Spring JD

Spring框架核心:IOC+AOP:

在这里插入图片描述

IOC:

一:容器 IOC(Inversion(反转)Of Control):控制反转;

什么是IOC
1.控制反转,把对象创建和对象之前调用过程,交给Spring进行管理
2.使用IOC的目的:降低代码耦合度
控制:资源的获取方式:
案例:

1.主动式:要什么资源就自己创建即可;
BookServlet{
    BookService bs = new BookService();//简单对象,没什么问题
    AirPlane ap = new AirPlane();//无功能,所以在复杂对象的创建时,是一个庞大的工程。
}
2.被动式:资源的获取不是自己创建,而是交给一个容器来创建和设置;
BookServlet{
BookService bs;
public void test01(){
     bs.checkout();//在当前阶段会空指针异常
}
}
  • 容器:管理所有的组件(组件:有功能的类)
  • 假设,BookServlet受容器管理,且BookService也受容器管理,此时上操作合理;
    容器可以自动的探查出来哪些组件(类)需要用到哪些组件(类)
    容器可以帮助我们创建BookService对象,并且把BookService对象赋值过去;
  • 容器:IOC:控制反转;主动的new资源变为被动的接受资源。(容器就像一个婚介所)

二:DI:(Dependency Injection 依赖注入)

  • IOC是一种思想,DI基于这种思想实现的描述
  • 容器能够知道哪个组件运行的时候,需要另一个类;
  • 容器通过反射的形式,将容器中准备好的BookService对象注入**(利用反射给属性赋值)**到BookServlet中;
  • 只要是容器管理的组件,都能够使用容器提供的强大功能。

三:如何给容器中注册组件

以前是自己new对象,现在是所有的对象都交给容器来创建;
框架编写流程:

  1. 导包
  2. 写配置
  3. 测试

四:IOC底层原理
(1)XML解析,工厂模式,反射
(2)IOC底层原理,目的是为了降低耦合度
在这里插入图片描述

IOC接口

1.IOC思想基于IOC容器完成,IOC容器的底层就是对象工厂
2.Spring提供IOC容器实现的两种方式:(两个接口)
(1)BeanFactory:IOC容器基本实现,是spring中内部的使用接口,一般不提供给开发人员使用。

  • 加载配置文件时不会创建对象,在获取对象(使用对象)时才会去创建对象
    (2)ApplicationContext :是BeanFactory接口的子接口,提供了更多更强大的功能,一般是提供给开发人员使用的。
  • 加载配置文件是就会把在配置文件中的对象进行创建
  • 相同点:他们都能够实现加载配置文件,通过工厂模式创建对象
  • ApplicationContext方法更好,因为Spring一般搭配web项目实现,在服务器进行启动,将耗时耗资源的操作都交给服务器处理,慢一点不要紧,浏览器端直接用就可以了。
    3.ApplicationContext接口有实现类
    在这里插入图片描述

IOC操作Bean管理(概念)

1.什么是Bean管理
(0)Bean管理指两个操作
(1)Spring 创建对象
(2)Spring 注入属性
2.Bean管理操作有两种方式
(1)基于XML配置问价方式实现
(2)基于注解方式实现

IOC操作Bean管理(基于xml方式)

1.基于xml方式创建对象
在这里插入图片描述
(1)在spring配置文件中,使用bean标签,在标签里面添加对应的属性,就可以实现对象创建。
(2)在bean标签中有很多属性,介绍常用属性。

  • id 属性 :唯一标识
  • class 属性 :创建对象所在的类全路径(包类路径)
  • name 属性 (与id类似,可以加特殊符号,基本弃用)
    (3)创建对象时,也默认调用无参构造方法

2.基于xml方式注入属性
(1)DI:依赖注入,就是注入属性(DI是IOC的一种具体实现)
3.第一种注入方式:使用set方法注入
(1)创建类,定义属性和对应的set方法
在这里插入图片描述
(2)在Spring配置文件中配置对象创建,再配置属性注入
在这里插入图片描述
测试代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.第二种注入方式:使用有参的构造注入
(1)创建类,定义属性
(2)创建属性对应的有参构造方法
在这里插入图片描述
(3)在Spring配置文件中进行配置
在这里插入图片描述
测试代码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.p名称空间注入(是对于set方法注入的一种简化)(了解即可不多用)
(1)使用p名称空间注入,可以简化基于xml配置方式
第一步:添加一个p名称空间在配置文件中
在这里插入图片描述

第二步:进行属性注入,在bean标签里面进行操作
在这里插入图片描述

IOC操作Bean管理(xml注入其他类型属性)

1.字面量
(1)null值
设置null值,用null标签来设置
在这里插入图片描述
测试代码:
在这里插入图片描述
(2)属性值包含特殊符号
例如地址内容中包含<>特殊符号,程序无法识别哪些是value值,哪些是标签符号,故报错
在这里插入图片描述
所以,应该将特殊符号当做value的值去执行:
方法一:转义,使用&lt、&gt对<>进行转义

方法二:把带特殊符号的内容写到CDATA中去
在这里插入图片描述
测试结果:在这里插入图片描述
2.注入属性–外部bean
3.注入属性–内部bean和级联赋值

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值