Spring4学习路线
- Spring第一天:Spring的概述、SpringIOC入门(XML)、Spring的Bean管理、Spring属性注入
- Spring第二天:Spring的IOC的注解方式、Spring的AOP开发(XML)
- Spring第三天:Spring的AOP的注解开发、Spring的声明式事务、JdbcTemplate。
- Spring第四天:SSH的整合、HibernateTemplate的使用、OpenSessionInViewFilter的使用。
什么是Spring
- pring:SE/EE开发的一站式框架。
- 一站式框架:有EE开发的每一层解决方案。
- WEB层 :SpringMVC
- Service层 :Spring的Bean管理,Spring声明式事务
- DAO层 :Spring的Jdbc模板,Spring的ORM模块
- 一站式框架:有EE开发的每一层解决方案。
改进:
如果底层的实现切换了,需要修改源代码,能不能不修改程序源代码对程序进行扩展?
Spring工厂类的结构图
1.1.1.3BeanFactory :老版本的工厂类
BeanFactory:调用getBean的时候,才会生成类的实例。
1.1.1.4ApplicationContext :新版本的工厂类
ApplicationContext:加载配置文件的时候,就会将Spring管理的类都实例化。
ApplicationContext有两个实现类
ClassPathXmlApplicationContext :加载类路径下的配置文件
FileSystemXmlApplicationContext :加载文件系统下的配置文件
Spring的配置
Schema的配置
上面 上下两个链接分别对应下面两张图片:
看下xml的配置:
主要是关于构造方法与set方法的属性注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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.xsd">
<bean id="userDAO" class="com.itheima.spring.demo1.UserDAOHibernateImpl">
<!-- <property name="name" value = "李东"></property> -->
</bean>
<!-- Spring的Bean的生命周期的配置 -->
<bean id="customerDAO" class="com.itheima.spring.demo2.CustomerDAOImpl" scope = "prototype" init-method="setup" destroy-method="destroy">
</bean>
<!-- Spring的属性注入的方式 -->
<!-- 构造方法的方式 -->
<bean id="car" class="com.itheima.spring.demo4.Car">
<constructor-arg name="name" value="宝马"/>
<constructor-arg name="price" value="800000"/>
</bean>
<!-- set方法的方式 -->
<bean id="car2" class="com.itheima.spring.demo4.Car2">
<property name="name" value="奔驰"/>
<property name="price" value="1000000"/>
</bean>
<!-- set方法注入对象类型的属性
<bean id="employee" class="com.itheima.spring.demo4.Employee">
value:设置普通类型的值,ref:设置其他的类的id或name -->
<bean id="employee" class="com.itheima.spring.demo4.Employee">
<property name="name" value="涛哥"/>
<property name="car2" ref="car2"/>
</bean>
<!-- 上面2种方式,可以换为p名称空间的方式
<bean id="car2" class="com.itheima.spring.demo4.Car2" p:name="奇瑞QQ" p:price="30000"></bean>
<bean id="employee" class="com.itheima.spring.demo4.Employee" p:name=王东" p:car2-ref="car2"></bean> -->
</beans>
整个工程大体的结构:
像上面UserDAO.java就是个接口,UserDAOImpl.java与UserDAOHibernateImpl.java就是实现接口的方法,SpringDemo1.java就去调用UserDAOImpl.java与UserDAOHibernateImpl.java。