一、spring介绍
框架是具有约束性的支撑某些功能实现的半成品的项目
struts1,struts2,hibernate,spring,springMVC,mybatis
ssh:struts2+spring+hibernate
ssm:springMVC+spring+mybatis
spring:设计型框架
springMVC:MVC框架
mybatis:持久层框架
spring的两大核心:IOC(DI)和AOP
IOC:反转控制,反转的是对象的控制权,没有spring时,由程序员自己根据业务的实现过程创建所需对象
在使用spring之后,在实现功能的过程中,所需对象就可以由程序本身的IOC容器所提供的
DI:依赖注入,根据依赖关系,通过预先定义好的方式(set方法,构造器)为所需对象进行赋值的过程
IOC是一种思想,DI是IOC的具体实现
三种获取IOC容器对象的方法:
1、Object obj = ac.getBean(String beanId);
2、Person person = ac.getBean(Person.class);
注意:此时在IOC容器中有且只能有一个此类型的bean
3、Person person = ac.getBean(“person”, Person.class);
此时通过两个条件就可以更精确的匹配到所需要的的对象
IOC容器的两种表现方式:
BeanFactory(只有最基本的功能,不建议使用)
ApplicationContext(是BeanFactory的子接口,其中有更多扩展的功能,建议使用)
ConfigurableApplicationContext(是ApplicationContext子接口,其中有刷新和关闭容器的方法)
ClassPathXmlApplicationContext(实现类,从类路径下匹配xml获取IOC容器)
FileSystemXmlApplicationContext(实现类,从文件系统下匹配xml获取IOC容器)
依赖注入的两种方式:
1、set注入,通过set方法为属性赋值
name:要赋值的属性名,和成员变量没有关系,只看set方法
value:为属性赋值
ref:引用当前IOC容器中的某一个bean的id
2、构造器注入,通过构造器为属性赋值
:通过构造器为某个参数赋值
value:为属性赋值
ref:引用当前IOC容器中的某一个bean的id
index:设置当前标签赋值的参数索引
type:设置当前标签赋值的参数类型
name:设置当前标签赋值的参数名称
注意:
构造器注入,必须能够匹配到相应的构造器
若不设置index,name,type时,按照标签的顺序为匹配到的构造器中的参数赋值,可以通过index属性设置顺序
若一个bean在通过构造器赋值时,匹配到了多个构造器,可以通过type和name指定赋值的参数
依赖注入时,可以使用的值:
1、字面量:字符串,基本数据类型和其所对应的包装类,都可以通过value属性和value子节点进行赋值
2、null
:赋值的是字符串"null",而不是空对象null
:赋值的是字符串""
:赋值null空对象
3、非字面量:使用ref引用IOC容器中某一个bean的id
注意:
1、id所对应bean必须存在
2、id所对应的bean必须能够为属性赋值,即必须为该类型的兼容性类型
4、内部bean
在当前的或中直接定义一个内部的bean对象
注意:此bean对象只能在当前的bean内部使用,不能在外部的bean中通过ref进行引用
5、为属性的级联属性赋值(了解)
注意:必须进行实例化或通过ref引用相应的bean对象,才可以使用级联属性赋值
而赋值之后,会对IOC中的原bean对象中的属性造成影响,即重新赋值
为数组类型的属性赋值:
在或的内部使用子节点进行赋值
为集合属性赋值
1、在或的内部
使用为List集合属性赋值
使用为set集合属性赋值
使用