Spring框架入门(一)
第一章 Spring介绍
正是因为Spring框架性质是属于容器性质的,容器中装什么对象就有什么功能,所以可以一站式。
第二章 Spring搭建
2.1 导包
将下面两个压缩文件解压
Spring需要的所有jar包都在4.2.4中,上面的jar包是一些流行的第三方工具类等等,
doc是文档,libs是需求的jar包,schema是需要的约束文件。
要导入什么jar包要看下面的图片。
与数据访问相关的由五个jar包,jdbc等等
web中封装了一些web基础。
核心容器包括四个包。是我们要导入的最最基础的包。SpEL是spring-expression。
导入日志包
老版本还需导入(可选,稳妥起见)
2.2 创建一个对象
2.3 书写配置注册对象到容器
位置任意,建议放到SRC下,配置文件名字任意,推荐叫applicationContext。
导入约束:
打开preference搜cata。
点击Add,依照下图的路径选择,Key-type选择Schema location,达到下图效果。
再key后面加上反斜杠/,并将上面的,复制到key的最后,效果如下。
打开applicationxml,输入beans,切换到design视图,右键选择edit Namespace,再选择Add,选择xsi,点击ok,再点Add,选择下面的Specify New Namespace,选择Browse,选择下面的Select XML catalog entry,找到刚才导入的schema,选择ok,将刚才去掉文件名的一段复制到Namespace上,选择ok,出现最后的图代表已成功。
书写配置注册对象到容器
假如applicationContext文件的位置在,那么加载方式为
第三章 Spring概念
3.1 思想
IOC:全称是inverse of control ,将我们创建对象的方式反转,以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入,使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入,反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序。
DI:Dependency Injection 实现IOC思想需要 DI做自持。
注入方式:set方法注入,构造方法注入,字段注入。
注入类型:值类型注入(八大基本数据类型) 引用类型注入(service依赖dao,web依赖service,将依赖对象注入)
可以通过配置直接创建,
只有实现了DI,才能实现IOC。
3.2 applicationContext&BeanFactory
BeanFactory
BeanFactory是最底层的接口,一直向下发展,是Spring原始接口,针对原始接口的实现类功能较为单一。
BeanFactory接口实现类的容器,特点是每次获得对象时才会创建对象(类似需要使用时才会创建)。
后来发展出了ApplicationContext,每次容器启动时就会创建容器中配置的所有对象,并提供更多的功能。
可以从类路径下加载配置文件:ClassPathXmlApplicationContext
从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext(d:/xxx/yyy/xxx")
结论:web开发中,使用applicationContext,再资源匮乏的环境可以使用BeanFactory。
第四章 Spring配置详解
4.1 Bean元素
Bean元素:使用该元素描述需要spring容器管理的对象
name属性:给被管理的对象起个名字,获得对象时根据该名称获得对象,可以重复,可以使用特殊字符。
class属性:被管理的对象的完整类名
id属性:与name一摸一样,名称不可重复,不能使用特殊字符。
结论:尽量使用name元素。
4.2 spring创建对象的方式
1.空参构造方式
直接用空参或者默认的构造函数进行构造。
2.静态工厂(了解)
我们不希望由Spring直接调用方法来创建,我们希望由Spring调用静态方法来创建对象,再把对象给我们。
调用UserFactory的createUser方法创建名为user2的对象,放入容器。
3.实例工厂(了解)
Bean元素进阶
scope属性:singleton、prototype、request、session
singleton(默认值):单例的对象,被标识为单例的对象再Spring中只会出现一个实例。
prototype:多例原型,被标识为多例的对象,每次获得才会创建,每次创建时都是新的对象。
request:在web环境下,对象与request生命周期一致。
session:web环境下,对象与session生命周期一致。
绝大多数的取值使用默认值,当spring与struts2整合时,actionBean要配置为多例。struts2在架构上来说,每次都需要一个新的action。
生命周期属性:Bean在创建的时候,如果需要一些初始化的操作要做,可以用Bean指定一个初始化方法,配置一个方法作为生命周期初始化方法,Spring会在对象创建之后立即调用。 init-method
也可配置一个方法作为生命周期的销毁方法,spring容器在关闭并销毁所有容器中的对象之前调用。destroy-method
在user中添加方法
Spring的分模块配置:将所有对象都放在一个配置文件太多了,可以用import元素导入其它配置文件,路径填写是去掉src之前的,只留下后面的。
第五章 spring的属性注入
5.1 set方法注入(重点)
值类型的注入:
对象类型的注入:在user中加入Car对象
5.2 构造函数注入
首先准备一个带有参数的构造,然后书写配置文件
假设出现了参数位置不同的构造函数,我们可以指定index属性的值来规定用哪个函数。
假设出现了有不同类型的参数值,我们可以对type属性进行填写,以使用所需的构造函数。
5.3 p名称空间注入(了解)
首先需要导入p命名空间,复制,到下面,再复制
,粘贴覆盖上面的网址,在最后加上/p,最后把xsi改成p即可。
5.4 spel注入(了解)
spel注入:Spring Expression Language表达式语言
可以取其他对象的值,类似于之前的EL
5.5 复杂类型注入
数组注入:
如果数组中只准备注入一个值(对象),直接使用value|ref即可。
如果多个值,在<property>中使用子元素
List注入:
Map类型注入:
Properties类型注入: