三大框架之Spring(1)

什么是框架?

框架就是一个重复代码的集合。可以使用框架来解决程序中集中、重复和通用的模块代码,提高程序员的开发效率,缩短项目周期。

Spring

Spring是一个轻量级的框架,并且是开源的,主要作用是能够整合现阶段所有的主流框架,负责所有框架的调度和整合,使各个框架之间调用更加流畅、快捷。(粘合剂的作用)

怎么理解轻量级呢?
spring的core不到1MB,占用计算机资源很小;对于容器依赖性小。

Spring IoC
IOC就是控制反转,就是将对象创建的权利交给spring容器来完成。从此程序员无需关注对象的创建过程。spring容器来维护对象的生命周期。

Spring IoC 的实现步骤:

1.导入相关jar包

这里写图片描述

2.创建实体类

这里写图片描述

3.编写Spring的配置文件(配置文件头,编写类的对应关系)

这里写图片描述

4.创建Spring容器
5.从容器中获取对象,对象调用方法,完成相应的功能

这里写图片描述

Spring 是如何创建对象的呢?
获得class属性的值通过反射调用创建对象。

ClassPathXmlApplicationContext的源码:(看英文注释就OK)
这里写图片描述

getBean源码:
这里写图片描述

加载时会将所有单例的bean实例化并且加入到HashMap中,在之后需要单例bean之时直接从hashmap中取,如果hashmap中没有则从spring容器中实例化并且将其放入hashmap,而非单例bean是不会被放入hashmap中,只会从spring容器中加载。
这里写图片描述

Spring的头文件的生成方式
1.通过拷贝的形式
2.通过约束文件自动生成

约束文件格式
1.schema 有严格的目录结构
2.DTD

导入约束文件:

这里写图片描述
这里写图片描述

导入约束的效果 能够实现在没有网的条件下 所有的标签能够自动提示。

通过约束生成头文件:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

bean的写法
class类型最好使用自动补齐功能,如果包名过长,手敲可能会出错。
id的写法:首字母小写,其他按照驼峰规则定义。见名知意,通常就写类名。

对象的创建的方式
1.构造方法创建对象–使用频率最高
如果构造方法重载,那么一定要加无参构造,如果没有无参构造,那么默认的对象创建方式必然出错。

2.静态工厂创建对象

这里写图片描述

最为关键的部分–static
这里写图片描述
spring的执行过程:
在spring容器启动时,先会加载applicationContext.xml这个配置文件,根据每一个bean创建对象,解析到factory-method属性时,
先到class中找到该方法,之后直接调用执行,执行以后创建出来Calendar对象。
如果没有static关键字,运行不会成功。

3.实例工厂:

这里写图片描述

这里写图片描述

实例工厂创建对象,先创建工厂对象,然后调用工厂对象的getCalendar方法,创建Calendar对象交给spring。

4.Spring工厂

这里写图片描述

这里写图片描述

当实现FactoryBean接口后,spring容器在启动的时候就会自动的调用getObject()创建对象。

Spring对象的创建过程:
当spring容器启动的时候,先会加载applicationContext.xml,逐行解析,
遇到每一个bean都会为这个bean创建对象,然后存入到map中,直到整个xml配置文件解析完成,spring容器才启动成功,在容器启动完成以后,才能为用户提供服务。

Spring创建对象的单例和多例

默认条件下,Spring创建对象默认都是单例的。
这里写图片描述
可以通过scope属性来控制对象的单例和多例。让对象创建方式更加灵活

对象的懒加载问题:

关于Spring bean创建的优化,在用户需要调用对象的时候,对象才会被创建出来。
当用户调用getBean()方法时 对象才创建—–理想状态

懒加载的实现:

lazy-init=”default”和默认不写时 懒加载不生效
lazy-init=”false” 懒加载不生效
lazy-init=”true” 懒加载生效

Scope=”prototype” lazy-init=”false”
当对象的创建形式为多例时,所有对象的创建都是懒加载

Spring容器,对于多例对象,只管创建,其他都不管。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值