Aop
AO解决OOP中遇到的一些问题.是OOP的延续和扩展.
优点
在不修改源码的情况下,对程序进行增强
AOP 可以进行权限校验,日志记录,性能监控,事务控制
底层实现
AOP依赖于IOC来实现
动态代理
proxy 代理的对象
method 代理的方法
args 方法的参数
Throwable 异常
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// 前置操作
before(method);
// 通过被代理对象调用真正需要执行的方法
Object res = method.invoke(target, args);
// 后置操作
after(method);
return res;
}
AOP相关术语
Joinpoint 连接点
Advice 通知/增强
Pointcut 切入点
Introduction 引介
Target 目标对象
Weaving 织入
Proxy 代理
Aspect 切面
注解方式
-
引入jar包 spring-aop aspectjweaver
-
配置文件 开启AOP注解 <aop:aspectj-autoproxy />
通过注解的方式开启切面支持 @EnableAspectJAutoProxy
-
创建AOP类 @Aspect
-
拦截@Pointcut("execution(public * com.tledu.zrz.spring.service..*.add(..))")
-
创建被代理的方法xxx()
-
@Before("xxx()") 前置通知
-
@After("xxx()") 后置通知
-
@Around("xxx()") 环绕通知
-
测试
Spring-mybatis整合
-
引入依赖 spring-jdbc mybatis mybatis-spring mysql-connector-java druid
-
添加mybatis的配置mybatis-config.xml 配置别名 配置mapper
-
添加数据库配置jdbc.propertise 配置数据库信息
-
配置spring配置文件 applicationConfig.xml
1配置注解扫描
2配置包扫描
3配置切面支持
4读取jdbc.propertise内容
5连接数据库
6读取SqlsessinoFactory工厂类
7搜索mapper实现类自动配置bean
通过注解的方式扫描mapper可以通过@MapperScan("com.tledu.spring_mybatis.mapper")
-
添加日志配置
-
创建mapper
-
测试
1.引入依赖
2.配置mybatis
3配置spring,在spring中集成mybatis
3.1读取jdbc配置文件
3.2 配置druid数据库连接池
3.3 配置sqlSessionFactory
3.4 配置mapper扫描
4. 可以通过注入的方式使用mapper
4.1 Service没有起名字
4.2 警告useSSL=false
4.3 一直连接不上()
4.4. 为了知道连接不上的原因,添加日志配置
4.5 原因是时区问题,在url中添加时区的配置
事务
添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>、
添加配置
<!-- 使使用注解配置的事务行为生效 -->
<tx:annotation-driven transaction-manager="txManager"/><!-- 仍然需要一个PlatformTransactionManager -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- (这个需要的对象是在其他地方定义的) -->
<property name="dataSource" ref="dataSource"/>
</bean>
使用注解
@Transactional(rollbackFor = Exception.class)
流程:
-
增加事务的配置
-
添加事务的注解
-
rollbackFor:回滚的时机
-
isolation:隔离级别
**************本次总结由李华帅友情提供