1.2 Spring4学习路线
Spring第一天:Spring的概述、SpringIOC入门(XML)、Spring的Bean管理、Spring属性注入
Spring第二天:Spring的IOC的注解方式、Spring的AOP开发(XML)
Spring第三天:Spring的AOP的注解开发、Spring的声明式事务、JdbcTemplate。
Spring第四天:SSH的整合、HibernateTemplate的使用、OpenSessionInViewFilter的使用。
1.3 Spring的概述
1.3.1 Spring的概述
1.3.1.1 什么是Spring##
11.pngSpring:SE/EE开发的一站式框架。
一站式框架:有EE开发的每一层解决方案。
WEB层 :SpringMVC
ervice层 :Spring的Bean管理,Spring声明式事务
DAO层 :Spring的Jdbc模板,Spring的ORM模块
1.3.1.2 为什么学习Spring
1.png1.3.1.3 Spring的版本
Spring3.x和Spring4.x
1.3.2 Spring的入门(IOC)
1.3.2.1 什么IOC
IOC: Inversion of Control(控制反转)。
控制反转:将对象的创建权反转给(交给)Spring。
1.3.2.2 下载Spring的开发包
1.3.2.3 解压Spring的开发包
2.pngdocs :Spring的开发规范和API
libs :Spring的开发的jar和源码
schema :Spring的配置文件的约束
1.3.2.4 创建web项目,引入jar包
3.png4.png
1.3.2.5 创建接口和类
5.png6.png
问题:
如果底层的实现切换了,需要修改源代码,能不能不修改程序源代码对程序进行扩展?
7.png
1.3.2.6 将实现类交给Spring管 6.png
理 ###
在spring的解压路径下spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html
8.png
1.3.2.7 编写测试类##
9.png1.3.2.8 IOC和DI(*****)##
IOC:控制反转,将对象的创建权反转给了Spring。
DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的依赖的属性注入(设置)进来。
面向对象的时候
依赖
Class A{
}
Class B{
public void xxx(A a){
}
}
继承:is a
Class A{
}## ##
Class B extends A{
}
聚合:has a
1.4 Spring的工厂类
1.4.1 Spring的工厂类
1.4.1.1 Spring工厂类的结构图
10.pngApplicationContext继承BeanFactory。
1.4.1.2 BeanFactory :老版本的工厂类
BeanFactory:调用getBean的时候,才会生成类的实例。
1.4.1.3 ApplicationContext :新版本的工厂类
ApplicationContext:加载配置文件的时候,就会将Spring管理的类都实例化。
ApplicationContext有两个实现类
ClassPathXmlApplicationContext :加载类路径下的配置文件
FileSystemXmlApplicationContext :加载文件系统下的配置文件
1.5 Spring的配置
1.5.1 XML的提示配置
1.5.1.1 Schema的配置
12.png1.5.2 Bean的相关的配置
1.5.2.1 <bean>标签的id和name的配置
id :使用了约束中的唯一约束。里面不能出现特殊字符的。
name :没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。
Spring和Struts1框架整合的时候
<bean name=”/user” class=””/>
1.5.2.2 Bean的生命周期的配置(了解)
init-method :Bean被初始化的时候执行的方法
destroy-method :Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)
1.5.2.3 Bean的作用范围的配置(重点)
scope :Bean的作用范围
singleton :默认的,Spring会采用单例模式创建这个对象。
prototype :多例模式。(Struts2和Spring整合一定会用到)
request :应用在web项目中,Spring创建这个类以后,将这个类存入到request范围中。
session :应用在web项目中,Spring创建这个类以后,将这个类存入到session范围中。
globalsession :应用在web项目中,必须在porlet环境下使用。但是如果没有这种环境,相对于session。
1.6 Spring的Bean管理(XML方式)
1.6.1 Spring的Bean的实例化方式(了解)
Bean已经都交给Spring管理,Spring创建这些类的时候,有几种方式:
1.6.1.1 无参构造方法的方式(默认)
编写类
13.png
编写配置
14.png
1.6.1.2 静态工厂实例化的方式
编写Bean2的静态工厂
15.png
配置
16.png
1.6.1.3 实例工厂实例化的方式
Bean3的实例工厂
17.png
配置
18.png
1.6.2 Spring的属性注入
1.6.2.1 构造方法的方式的属性注入
构造方法的属性注入
19.png
1.6.2.2 Set方法的方式的属性注入
Set方法的属性注入
20.png
Set方法设置对象类型的属性
21.png
1.6.2.3 P名称空间的属性注入(Spring2.5以后)
通过引入p名称空间完成属性的注入:
写法:
普通属性 p:属性名=”值”
对象属性 p:属性名-ref=”值”
P名称空间的引入
22.png
使用p名称空间
23.png
1.6.2.4 SpEL的属性注入(Spring3.0以后)
SpEL:Spring Expression Language,Spring的表达式语言。
语法:#{SpEL}
24.png
1.6.3 集合类型属性注入(了解)
1.6.3.1 配置
<!-- Spring的集合属性的注入============================ -->
<!-- 注入数组类型 -->
<bean id="collectionBean" class="com.itheima.spring.demo5.CollectionBean">
<!-- 数组类型 -->
<property name="arrs">
<list>
<value>王东</value>
<value>赵洪</value>
<value>李冠希</value>
</list>
</property>
<!-- 注入list集合 -->
<property name="list">
<list>
<value>李兵</value>
<value>赵如何</value>
<value>邓凤</value>
</list>
</property>
<!-- 注入set集合 -->
<property name="set">
<set>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</set>
</property>
<!-- 注入Map集合 -->
<property name="map">
<map>
<entry key="aaa" value="111"/>
<entry key="bbb" value="222"/>
<entry key="ccc" value="333"/>
</map>
</property>
</bean>
网友评论