一、 1. spring 是开源的轻量级框架
2. spring 核心内容
(1) aop: 面向切面编程,扩展功能不是修改源代码实现
(2) ioc: 控制反转
比如有一个类,在类里面有方法(不是静态方法)调用类里面的方法,创建类的对象,使用对象调用方法,创建调用方法,
创建类对象的过程,需要new出来对象
一 一 把对象的创建不是通过new 方式实现,而是交给spring配置创建类的对象
3. spring 是一站式框架
(1)spring 在Javaee 三层框架中,每一层都提供了不同的解决技术
web 层:springMVC
service层:spring 的 ioc
dao层: spring 的 jdbcTemplate
4.spring 版本
(1) hibernate5.x
(2) spring4.x
(3) struts2
二、spring 的 ioc 操作
1. 把对象的创建交给spring 进行管理
2.ioc 操作两部分
(1) ioc 的配置文件方式
(2)ioc 的注解方式
三、IOC 底层原理
1. ioc 底层原理使用技术
(1)xml配置文件
(2)dom4j 解决 xml
(3)工厂设计模式
(4)反射
2. 画图分析ioc 实现原理
四、IOC 入门案例
第一步:导入jar包
第二步:创建一个类
public class User { public void add(){ System.out.println("add~~~~~~~~~~~"); }
public static void main(String[] args){ User user=new User(); user.add(); } }
第三步:创建spring配置文件,配置创建类
(1) spring 核心配置文件名称和位置不是固定的
建议放到src下面,官方建议applicationContext.xml
(2) 引入 schema 约束
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
(3) 配置对象创建
<!-- ioc入门 id可以随便写,建议写类名小写 class 路径-->
<bean id="user" class="com.hcq.ioc.User"> </bean>
第四步: 写代码测试对象创建
(1) 这段代码在测试中使用
@Test
public void testUser()
{
// 1.加载spring配置文件,根据创建对象
ApplicationContext act=new ClassPathXmlApplicationContext("bean1.xml");
// 2.得到配置创建的对象
User user=(User) act.getBean("user");
System.out.println(user);
user.add();
}
(2) 配置文件没有提示问题
1. spring 引入 schema约束,把约束文件引入到eclipse中
(1) 复制约束路径
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
五、 spring 的 bean 管理 (xml方式)
1、Bean 实例化方式
(1) 在spring 里面通过配置文件创建对象
(2) bean实例化三种方式实现
第一种 使用类的无参数构造创建(重点)
类里面没有无参数的构造,出现一下异常
第二种 使用静态工厂创建
(1) 创建静态的方法,返回类对象
第三种 使用实例工厂创建
(2) 创建不是静态的方法,返回类对象
六、Bean 标签常用属性
1. id 属性: 起名称,id属性值名称 任意命名
- id属性值, 不能包含特殊符号
- 根据id值 得到配置对象
2、 class属性: 创建对象所在类的全路径
3、name 属性:功能和id属性一样的,id属性值不能包含特殊符号,但是在name属性值里面可以包含特殊符号
4、scope 属性:
-singleton:默认值,单例
-prototype: 多例
-request:创建对象把对象放到request域里面
-session:创建对象把对象放到session域里面
-globalSession:创建对象把对象放到globalSession域里面
七、属性注入介绍
1.创建对象时候,向类里面属性里面设置值
2.属性注入的方式介绍(三种方式)
(1) 使用set 方法注入
(2) 使用有参数构造注入
(3)使用接口注入
3. 在spring 框架里面,支持前两种方式
(1) set 方法注入(重点)
(2) 有参数构造注入
使用有参数构造注入属性
使用 set 方法注入属性
八 注入对象类型属性(重点)
1.创建service类 和 dao类
(1)在service 得到 dao 对象
2. 具体实现过程
(1) 在 service 里面把 dao 作为类型属性
(2) 生成 dao 类型属性的set 方法
(3) 配置文件中注入关系
九、Person 名称空间注入
十、 注入复杂类型属性
十一、 IOC 和 DI 区别
1.数组
2.list集合
3.map集合
4.properties 类型
(1) IOC : 控制反转,把对象创建交给spring 进行配置
(2) DI: 依赖注入,向类里面的属性中设置值
(3) 关系:;依赖注入不能单独存在,需要在ioc 基础上完成操作