Spring
课程分析:
第一天:Spring的IOC(XML)
要求 能够独立搭建IOC的开发环境 理解IOC的优势
第二天:Spring的IOC(注解)
要求 能够独立搭建注解的IOC开发环境 使用XML和注解实现案例
第三天:Spring的AOP(XML和注解)
要求 能够搭建AOP的开发环境 理解AOP的技术 实现案例
第四天:Spring的JdbcTemplate和声明式事务
要求 会用JdbcTemlate实现增删改查 会配置spring的声明式事务
第五天:SSH整合
要求 整合三个版本,
程序的耦合:
调用者和被调用者的依赖关系
在开发过程中遵循的原则是:
编译时不依赖,运行时依赖
解决依赖的关系:
使用反射创建类对象
使用反射创建类对象引发的问题:
使用配置文件,通过读取配置文件来反射创建对象
Day01
1.1.1 Spring介绍
Spring是分层的轻量级开源框架,以IOC(反转控制)和AOP(面向切面编程)为内核,提供了表现层Spring MVC 和持久层 Spring JDBC以及业务层事务管理等众多的企业级应用技术。
1.1.2 spring的优势
1方便解耦 简化开发
通过spring提供的IOC容器,可以将对象间的依赖关系交由Spring进行控制,避免耦合。
2 AOP编程的支持
通过AOP功能,方便进行面向切面编程。
3声明式事务的支持
通过声明式方式精活的进行事务的管理
4 方便程序的测试
可以用非容器的编程方法进行几乎所有的测试工作。
5 方便集成各种优秀框架
Spring可以降低各种优秀框架的使用难度,提供了对各种框架的直接支持
6 降低javaEE API 的使用难度
spring对javaEE API进行了封装,使得API使用变的简单
7 java源码是经典学习范例
Spring的源码设计精巧,结构清晰。
Spring的应用:
1 导入jar包
2 在项目的根目录下创建bean.xml 文件,声明约束,然后配置资源。
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schma/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.xsd">
<!-- 配置资源:把对象的成绩交个spring来处理 -->
<bean id= "customerService"class="com.haut.service.impl.CustomerServiceImpl"></bean>
<bena id= "customerDao"class="com.haut.Dao.impl.CustomerDao"/>
</beans>
调用对象的方法:
ClassPathXmlApplicationContext:他是只能加载类路径下的配置文件,一般使用它
FileSystemXmlApplicationContext:他是可以加载磁盘下的配置文件,一般不用
获取容器:
ApplicationContext ac = newClassPathXmlApplicationContext(“bean.xml”);
得到对象:
ICustomerService cs = (ICustomerService)ac.getBean(“customerService”);
Bean的两种创建规则:
BeanFactory:延迟加载,bean对象什么时候用什么时候创建
ApplicationContext:立即加载,只要解析完bean.xml文件就立即加载。
Bean的三种实例化方法:
1. 调用无参构造函数创建,如果没有无参构造函数,会出异常(用的最多)
2. 使用静态工厂中的方法创建
需要使用bean标签的factory-method属相,指定静态工厂中的方法
3. 使用实例工厂创建
首先声明实例化工厂对象,然后利用实例化工厂对象中的方法来实例化对象。
bean的作用范围:
他是可以通过配置的方法来调整作用范围
配置的属性:bean标签的属性 scope属性
属相的取值有:
singleton:单例(默认的)
prototype:多例的(当我们让spring接管Struts2的action创建时,action必须配置)
request:作用方法是一次请求
session:作用范围是一次会话
globalsession:作用范围是一次全局会话
bean的声明周期:
涉及bean标签的两个属性
init-method destroy-method
单例:出生:容器创建,对象出生
活着:只要容器在,对象就活着
死亡:容器销毁,对象消亡
多例:出生:每次使用时创建对象
活着:只要对象在使用中就一直活着
死亡:当对象长时间不使用,并且也没有其他对象引用时,有java的垃圾回收机制销毁。