Spring学习笔记
Spring入门案例:
第一步:导入jar包:
(1)做Spring最基本的功能时,只需要导这四个核心的jar包就可以了
(2)导入支持日志输出的jar包
第二步:创建类,在类中创建方法
第三部:创建Spring配置文件,在配置文件中创建方法
(1) Spring的核心配置文件的名称和位置不是固定的
建议放到src下,名称建议是applicationContext.xml
(2) 引入schema约束
<beansxmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">
(3) 配置对象的创建
第四步:写代码测试对象的创建
Spring的bean管理(XML方式):
bean实例化的方式:
bean实例化的三种方式:
第一种:使用类的无参构造方法创建
这种就是利用类中的无参构造方法进行创建的。
第二种:使用静态工厂创建
创建静态的方法,返回类的对象
第三种:使用实例工厂创建
创建不是静态的方法,返回类的对象。
bean标签常用的属性:
(1) id属性 起名称,属性值可以随意命名
(2) class属性 创建对象所在类的全路经
(3) name属性 功能和id属性是相似的,不过id的值不能包含特殊的符号,但是name的值可以包含特殊的符号
(4) scope属性
(1) singleton 单例对象(默认)
(2) prototype 多例
(3) request 将对象方法request对象中
(4) session 将对象放到session对象中去
(5) globalSession 将对象放到globalSession域中
属性注入:
1 在创建对象时,并向类中的属性设置值
2 属性注入的三种方式:
第一种 使用set方法注入
第二种 使用有参的构造方法注入
第三种 使用接口注入
3 在spring框架中只支持前两种方式注入(set方法注入,使用有参的构造方法注入)
(1)使用有参构造方法注入属性值演示:
(2)使用set方法注入属性值演示:(重点)
注入对象类型的属性(重点)
1 创建service类和dao类
在service类中得到dao类的对象
2 具体的实现过程:
(1) 在service类中将dao作为类型属性
(2) 生成dao类型属性的set方法
(3) 在配置文件中完成对象属性的注入
P名称空间的注入:
注入复杂类型的属性
1 数组类型
2 list集合类型
3 Map集合类型
4 properties类型
IOC与DI的区别:
(1)IOC 控制反转 表示将类的创建交给Spring框架进行控制(配置)
(2)Di 依赖注入 类中的属性依赖Spring框架进行注入
(3)关系: 依赖注入不能单独存在,必须在ioc(控制反转)的基础上完成
Spring整合Web项目的原理:
1 加载Spring核心配置文件:
这样每次都new出来会导致效率很低。
3 提高效率的实现思想:把加载配置文件和创建对象的过程,在服务器启动时完成。
Spring的bean管理(注解):
注解介绍:
1 是代码中的特殊标记,使用注解可以完成功能。
2 注解写法 @注解名称(属性名称=属性值)
3 注解使用在类上面,方法上面和属性上面
Spring注解开发准备:
1 导入jar包
(1) 导入Spring的基本的jar包
(2)导入Spring的aop的jar包
2 创建类,创建一个方法
3 创建Spring的配置文件,引入约束
3 开启注解扫描
注解创建对象:
(1) 在创建对象的类上使用注解实现
(2) 创建对象有四个注解:
@Component
@Controller
@Service
@Repository
目前这四个注解都是创建对象的功能
(3)创建对象是单实例还是多实例
注解注入属性:
1 创建Service类,创建dao类 在Service中得到dao对象
注入属性的第一个注解 AutoWired
(1) 创建Service对象和dao对象
2 在Service类中定义dao类型属性
注入属性的第二个注解 @Resourse(name=“”)
配置文件和注解混合使用
1 创建对象使用配置文件的方式实现
2 注入属性使用注解的方式实现
AOP的概念
1 aop是面向切面(平面)的编程,扩展功能不需要修改源代码
2 aop采取横向抽取机制,取代了传统纵向继承体系重复性的代码
Aop的原理
AOP相关的术语
连接点:一个类中哪些方法可以被增强,这个方法就称为连接点。
切入点:一个类中有很多方法可以被增强,实际操作中被实际增强的方法就叫做切入点。
通知/增强:增强的逻辑就叫增强,比如说这个类中需要增强一个日志的功能,那么这个功能就叫增强。
1) 前置通知 在方法之前执行
2) 后置通知 在方法之后执行
3) 异常通知 出现异常时执行
4) 最终通知 在后置之后执行
5) 环绕通知 在方法之前和方法之后执行
切面:把增强应用到具体的方法上面,过程称为切面。(把增强应用到切入点上面的过程)
Spring的aop操作:
1 在Spring里面进行aop操作,使用aspectj实现。
(1) aspectj不是Spring的一部分,是一个进行aop操作的框架,和Spring一起使用进行aop操作
2 使用aspectj实现aop操作有两种方式:
1) 基于aspectj的XML形式
2) 基于aspectj的注解的形式
AOP操作的准备工作:
1 除了导入基本的jar包外,还要导入aop相关的jar包。
2创建Spring的核心配置文件,引入aop的约束
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="
http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd">
使用表达式配置切入点:
1 切入点 就是实际增强的方法;
2 常用的表达式:
(1) execution(*com.seac.aop.Book.add(..))
(2) execution(*com.seac.aop.Book.*(..))
(3) execution(* *.*(..))
(4) 匹配所有save开头的方法execution(* save.*(..))
Acpectj的aop操作:
Log4j介绍:
1 通过log4j能够看到程序运行过程中的更详细的信息。
经常使用log4j查看日志
2 log4j的使用:
1) 导入log4j的jar包
2) 复制log4j的配置文件,复制到src下
3) 设置日志的级别
Debug
Info
Spring整合web项目的演示:
1 演示的问题
(1)action调用service,Service调用dao,
这样每次访问action时都创建一次ApplicationContext对象,影响效率》
2解决方案:
1) 在服务器启动时,就创建对象加载配置文件。
2)底层使用监听器,servletContext对象
3在Spring中不需要我们写代码实现,已经封装。
1) 封装了监听器,我们只需配置监听器就可以了
2) 配置Spring的监听器之前要导入一个Spring的整合web项目的jar包
基于aspectj的注解的形式进行Aop操作
1 使用注解方式实现aop操作:
第一步:创建对象
第二步:在Spring的核心配置文件中开启aop的操作配置
第三部:在增强类上使用注解完成aop操作
Spring的jdbcTemplate操作:
1 Spring框架是一站式框架,
针对javaee三层,每层都有解决的技术
在dao层使用jdbcTemplate
2 Spring对不同的持久化层技术都做了封装
JdbcTemplete就是Spring对Jdbc做了封装
3 JdbcTemple使用和dbutilus使用很相似,都是对数据库进行CRUD操作
增加
1 导入JdbcTemplete使用的jar包
2 创建对象,设置数据库的信息
3 创建JdbcTemplate对象,设置数据源
4 调用JdbcTemplate对象中的方法实现操作
修改
删除
查询
1 使用JdbcTemplate进行查询操作
2 查询具体实现
第一个 查询返回一个值
第二种 查询返回一个对象
==============================================================================
第三种 查询返回一个list集合
Spring配置连接池和dao使用jdbcTemplate:
1. Spring配置c3p0的连接池:
1导入jar包
2 创建Spring的配置文件,配置连接池。
使用配置文件进行配置
2. Dao中使用jdbcTemplate:
Spring事务的管理:
Spring事务管理的APi:
1Spring事务管理的两种方式:
第一种 编程式事务管理:(基本不用)
第二种 声明式事务管理
(1) 基于XML配置文件实现
(2) 基于注解的方式实现
2 Spring事务管理的APi介绍:
(2)首先要配置事务管理器的对象:
搭建转账环境:
1 创建数据库表添加数据
2 创建Service和dao类,完成注入关系
(3) 需求小王转给小马1000块,小王减1000,小马增1000.
此时没使用事务会产生问题,如果小王少了1000后程序出现异常,小马的钱就没有增加,导致钱就丢失了。
(4) 解决方法:
添加事务解决,出现异常进行回滚操作
声明式事务管理(xml方式)
1 配置文件方式,使用aop思想配置
第一步 配置事务管理器:
第二步 配置事务的增强
第三步 配置切面
声明式事务管理(注解方式)
第一步:开启事务管理器
第二步:配置事务注解
第三步:在要使用事务的方法的所在类上添加注解
SSH框架的整合思想: