Spring第一天
框架部分:
Spring:5天
SpringMVC:1天
Mybatis:2天
Spring:
第一天:学习IOC和DI
第二天:简化配置
第三天:AOP面向切面编程
第四天:AOP重点练习
第五天:JDBC整合和声明式事务
S、S、H
Sturs2(替代Servlet) 、Spring、Hibernate(取代JDBC操作)
SpringMVC(替代Servlet)、Spring、Mybatis(取代JDBC操作)
Spring框架:
特点:1.轻量级低侵入性框架 降低耦合度
2.具有整合多种三方框架的能力
2. Spring框架的IOC(控制反转)
//原来对象的创建 是由 程序员控制
Girl g = new Girl();
//控制反转 是由Spring容器来创建
Girl g2 = Spring框架.getBean(“美女”);
3. 创建Spring框架的Helloworld
- 导入jar包 (7个)
- 创建业务中的类
- 去配置文件中添加配置内容
- 创建Spring容器
- 通过容器获取对象
Pojo和entitys和 beans 一样
3.1导入jar包
3.2创建类
3.3添加约束文件
3.4创建配置文件
3.4.1最简单最常用 从别的工程复制过来
3.4.2在src下面创建xml文件
3.5.通过自定义模板代码添加约束
3.6 .在配置文件里面添加内容
3.7.创建Spring容器 进行测试
- Spring框架创建对象的过程:
创建Spring容器对象的时候 加载了 Spring的核心配置文件,在配置文件中加载了被Spring框架管理的对象的信息,当Spring容器创建时容器所管理的对象同时创建出来,当用户需要使用对象的时候通过容器的getBean()写进去对象的id 获取对象,实际上在Spring容器中存在一个map对象 用来保存所管理的对象 用户配置的bean的id 就是 map对象中的key ,用户所以可通过key去获取spring中的对象
- Spring框架获取对象的方式有两种
a) 通过ID获取
b) 通过Class(类型获取)
在工作中通过id获取更常用,因为通过类型获取有可能在配置文件中出现多个同类型的bean 会报以下错
- Spring框架创建对象的方式
共3+1种方式创建对象
6.1构造方法创建对象
必须包含无参的构造方法
如果需要有有参构造方法 必须自己添加无参构造方法
6.2 静态工厂创建对象
通常通过工厂创建抽象类对象或接口类的实现类
在bean标签中 添加一个 factory-method =”创建对象的方法名称”
6.3 实例工厂创建对象
需要在配置文件中添加两个bean标签 见下图
6.4 Spring工厂创建对象
让工厂类实现 FactoryBean接口并实现接口中的三个方法:
- getObject 返回创建的对象
- getObjectType 返回对象的类型
- isSingleton 控制是否是单例
总结:四种创建对象的方式中 通过构造方法创建的对象的方式最常用
- 别名标签
可以给spring所管理的对象起多个别名 获取对象的时候可以起到id的作用
- 单例和多例
如果把对象设置为多例 则Spring容器不再维护对象的生命周期 并且对象的创建变成了 懒加载模式
9.懒加载
- Spring框架中对象的生命周期方法
Init为初始化方法 destroy为销毁方法
对象的生命周期:
创建对象的时候会先调用构造方法 对象创建完之后调用init方法 执行对象的各种业务方法 最后容器销毁的时候执行对象的destroy方法
- Spring的DI(属性注入/依赖注入)
有两种注入方式:
10.1 set方法注入
此注入方式 依赖于属性的set方法
10.2 构造方法注入
<bean id="person" class="cn.tedu.pojo.Person" >
<property name="name" value="诸葛亮"></property>
<property name="age" value="18"></property>
<property name="friends">
<list>
<value>蔡文姬</value>
<value>黄忠</value>
<value>马可波罗</value>
</list>
</property>
<property name="map">
<map>
<entry key="aaa" value="111"></entry>
<entry key="bbb" value="222"></entry>
</map>
</property>
<property name="set">
<set>
<value>大乔</value>
<value>小乔</value>
<value>貂蝉</value>
</set>
</property>
<property name="properties">
<props>
<prop key="p1">pppp1</prop>
<prop key="p2">pppp2</prop>
</props>
</property>
<property name="strings">
<array>
<value>aaa</value>
<value>bbb</value>
</array>
</property>
<property name="myDog" ref="dog"></property>
</bean>
- 介绍Spring框架
- 创建了一个Helloworld
- 手动导入jar包7个
- 获取对象的2中 id 类型
- 创建对象的4种 1.构造方法创建 2.静态工厂 3.实例工厂3.spring工厂
- 单例 scope=singleton/prototype
- 懒加载 单例默认是非懒加载 多例是懒加载 全局配置
- 生命周期方法 init destroy
- DI注入