spring笔记
1.spring介绍
1.三层架构中spring位置
2.spring一站式框架
容器中装什么对象就有什么功能.所以可以一站式.
不仅不排斥其他框架,还能帮其他框架管理对象.
aop支持
IOC思想
spring jdbc
aop事务
Junit测试支持
2.spring搭建
1.导包(4+2)
- 基础包(4)
- 日志包(2)
- Junit和jdk
2.创建一个对象
3.书写配置注册对象到容器(spring配置文件)
- 位置
位置任意(建议放到src下)
配置文件名任意(建议applicationContext.xml)
- 创建
- 代码测试
3.spring概念
1.思想
1.ioc
IOC: Inverse Of Control 控制反转
通俗的讲,即将我们创建对象的方式反转了
以前对象的创建是由开发人员自己维护,包括依赖关系也是自己注入,
使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入,
控制反转就是反转了对象创建方式,从我们自己创建反转给程序(spring)。
2.DI
DI:Dependency Injection 依赖注入
实现IOC思想需要DI做支持
注入方式:
set方法注入
构造方法注入
字段注入
注入类型:
值类型注入——8大基本数据类型
引用类型注入——将依赖对象注入
2.applicationContext&BeanFactory
1.BeanFactory接口
spring原始接口.针对原始接口的实现类功能较为单一;
BeanFactory接口实现类的容器.特点是每次在获得对象时才会创建对象。
2.ApplicationContext
每次容器启动时就会创建容器中配置的所有对象.并提供更多功能
从类路径下加载配置文件:ClassPathXmlApplicationContext
从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")
3.结论
web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory.
4.spring配置详解
1.Bean元素
2.Bean元素进阶
1.scope属性
singleton(默认值):单例对象.被标识为单例的对象在spring容器中只会存在一个实例
prototype:多例原型.被标识为多例的对象,每次再获得才会创建.每次创建都是新的对象.
2.生命周期
配置一个方法作为生命周期初始化方法.spring会在对象创建之后立即调用:init-method
配置一个方法作为生命周期的销毁方法.spring容器在关闭并销毁所有容器中的对象之前调用:destory-method
调用close方法是,用ClassPathXmlApplicationContext
3.spring创建对象的方式
1.空参构造方式
2.静态工厂(了解)
3.实例工厂(了解)
4.spring的分模块配置
5.spring属性注入
1.注入方式
1.set方法注入
2.构造函数注入
3.p名称空间注入
4.spel注入
2.复杂类型注入
1.数组
2.List
3.Map
4.Properties
5.效果
CollectionBean(arr=[tom, asjdkfdh, User(name=Tom, age=3423, car=Car(name=lafjdla汽车, color=red))],
list=[gonchen, dfafadlkga, User(name=Tom, age=3423, car=Car(name=lafjdla汽车, color=red))],
map={url=jdbc:mysql:////cadjskf, user=User(name=Tom, age=3423, car=Car(name=lafjdla汽车, color=red)), User(name=jadsfa, age=3423, car=Car(name=lafjdla汽车, color=red))=User(name=999, age=null, car=Car(name=lafjdla汽车, color=red))},
prop={password=123144, driverClass=com.jdbc.mysql.Driver, userName=root})