spring框架学习

1、开发中主要使用spring的什么技术?

a)IOC容器管理各层组件
b)使用aop配置声明式事务

c)整合其他框架
spring框架学习_第1张图片

2、为什么说spring是一站式框架

spring框架学习_第2张图片

3、spring搭建

spring框架学习_第3张图片

(1)导包:基本包+日志包
(2)创建一个pojo对象
(3)书写配置注册对象到容器
------------配置文件:applicationContext.xml

------------这其中的导入约束是什么意思?
spring框架学习_第4张图片

(4)代码测试
spring框架学习_第5张图片

其实就是在实际编码过程中我们是如何使用这个对象的。首先是创建对象,然后就是通过容器调用他的方法来获取我们想要的对象。

4、spring概念

spring框架学习_第6张图片

spring框架学习_第7张图片

5、spring中的工厂(容器)

(1)ApplicationContext

ApplicationContext接口有两个实现类:
ClassPathXmlApplicationContext:加载类路径下的spring配置文件
FileSystemXmlApplicationContext:加载本地磁盘下的spring的配置文件

(2)ApplicationContext和BeanFactory的区别

BeanFactory接口实现类的容器,特点是每次在获得对象的时候才会创建对象。
ApplicationContext接口实现类的容器,特点是每次加载配置文件,容器启动的时候就会创建容器中配置的所有对象。

结论:web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory.

6、spring中的bean元素----看下视频明白一下空参构造创建对象

spring中如何配置bean对象

(1)通过全类名(反射)
(2)通过静态工厂或者实例工厂

如何创建bean对象

(1)空参构造的方式

(2)静态工厂的方式
spring框架学习_第8张图片

(3)实例工厂的方式
spring框架学习_第9张图片

bean元素属性注入---看视频明白set方法注入

set方法注入
spring框架学习_第10张图片

构造函数注入
spring框架学习_第11张图片

p名称空间注入
spring框架学习_第12张图片

spel注入
spring框架学习_第13张图片

复杂类型注入
spring框架学习_第14张图片
spring框架学习_第15张图片
spring框架学习_第16张图片

bean元素属性

Bean元素:使用该元素描述需要spring容器管理的对象
spring框架学习_第17张图片

使用name属性时,开发中不建议名称重复

scope属性:对象的作用域
spring框架学习_第18张图片

四个取值对应四个范围

当通过Spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:

singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例
prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例
request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效
session:对于每次HTTP Session,使用session定义的Bean都将产生一个新实例。同样只有在Web应用中使用Spring时,该作用域才有效
globalsession:每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。典型情况下,仅在使用portlet context的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效

其中比较常用的是singleton和prototype两种作用域。对于singleton作用域的Bean,每次请求该Bean都将获得相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为;如果一个Bean被设置成prototype作用域,程序每次请求该id的Bean,Spring都会新建一个Bean实例,然后返回给程序。在这种情况下,Spring容器仅仅使用new 关键字创建Bean实例,一旦创建成功,容器不在跟踪实例,也不会维护Bean实例的状态。

如果不指定Bean的作用域,Spring默认使用singleton作用域。Java在创建Java实例时,需要进行内存申请;销毁实例时,需要完成垃圾回收,这些工作都会导致系统开销的增加。因此,prototype作用域Bean的创建、销毁代价比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean被设置成prototype作用域。

bean元素生命周期

1、通过构造器或者工厂方法创建bean实例
2、为bean的属性值设置值和对其他bean的引用
3、调用bean的初始化方法
4、使用bean对象

5、容器关闭时调用bean的销毁方法
spring框架学习_第19张图片

经过如上对Bean作用域的介绍,接下来将在Bean作用域的基础上讲解Bean的生命周期。

Spring容器可以管理singleton作用域下Bean的生命周期,在此作用域下,Spring能够精确地知道Bean何时被创建,何时初始化完成,以及何时被销毁。而对于prototype作用域的Bean,Spring只负责创建,当容器创建了Bean的实例后,Bean的实例就交给了客户端的代码管理,Spring容器将不再跟踪其生命周期,并且不会管理那些被配置成prototype作用域的Bean的生命周期。Spring中Bean的生命周期的执行是一个很复杂的过程,读者可以利用Spring提供的方法来定制Bean的创建过程。Spring容器在保证一个bean实例能够使用之前会做很多工作:

7、使用注解代替xml配置

spring框架学习_第20张图片

(1)导包
(2)导入新的约束
(3)在spring配置文件applicationConfig.xml中开启使用注解代理配置文件
(4)在类中使用注解完成配置

注解有:将对象注册到容器(区分对象属于哪一层):
修改对象的作用范围:

在类的成员变量上注解

引用类型注入,需要先把这个对象注册到容器中。

@Autowired自动扫描容器中符合这个类型的对象,如果找到的话就会赋值给变量

8、spring与junit整合测试

spring框架学习_第21张图片

@RunWith(SpringJUnit4ClassRunner.class)注解功能时帮助我们创建容器

@ContextConfiguration("classpath:applicationContext.xml")指定创建容器时使用的配置文件
容器创建好之后,从容器中取对象的方式如下:

spring框架学习_第22张图片

作用:方便程序的测试
spring对junit4的支持,可以通过注解方便的测试spring程序

9、spring的JDBC模板

spring提供了很多模板整合dao技术
spring框架学习_第23张图片
spring框架学习_第24张图片
spring框架学习_第25张图片

你可能感兴趣的:(spring框架学习)