1.1 上次课内容回顾
l Spring的IOC的注解开发
n 注解的入门
u 引入aop的包
u 引入context约束
l <context:component-scan />
u 使用注解开发
l @Component :定义Bean
n @Controller :WEB层
n @Service :Service层
n @Repository :DAO层
l 属性注入:
n 普通属性 :@Value
n 对象属性 :@Resource
u @Autowired :按类型注入属性,按名称@Qulifier
n XML方式和注解方式比较
u XML方式 :适用性更广,结构更加清晰。
u 注解方式 :适用类是自己定义,开发更方便。
n XML和注解的整合开发
u XML定义类
u 注解属性注入
l Spring的AOP的基于AspectJ的XML的开发
n AOP的概述
u AOP:面向切面编程,是OOP的扩展和延伸,是用来解决OOP遇到问题。
n Spring的AOP
u 底层的实现
l JDK的动态代理
l Cglib的动态代理
u AOP的相关术语
l 连接点:可以被拦截的点。
l 切入点:真正被拦截的点。
l 通知:增强方法
l 引介:类的增强
l 目标:被增强的对象
l 织入:将增强应用到目标的过程。
l 代理:织入增强后产生的对象
l 切面:切入点和通知的组合
u AOP的入门开发
l 引入jar包
l 编写目标类并配置
l 编写切面类并配置
l 进行aop的配置
<aop:config>
<aop:pointcut expression=”execution(表达式)” id=”pc1”/>
<aop:aspect >
<aop:before method=”” pointcut-ref=”pc1”/>
</aop:aspect>
</aop:config>
u 通知类型
l 前置通知
l 后置通知
l 环绕通知
l 异常抛出通知
l 最终通知
u 切入点表达式写法
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> </beans>
用注解切入点配置 替换原有的注解:
create database spring4_day03; use spring4_day03; create table account( id int primary key auto_increment, name varchar(20), money double );
注意上图之所以可以直接用Resource注入模板(xml未开启注解)是因为引入了TX的jar包 但是只能在单元测试使用 不能再其他类使用。
注意查找的封装操作 如上图。
上图 只给Dao注入连接池就好 因为实现类继承了接口 会自动创建模板。
但如果 有异常:
就会出现 前者钱少了 后者却没收到钱。
上面是无事务保证的过程,接下来引入事务: