一、学习内容
Spring AOP
二、.今天的知识点
1.什么是AOP?
AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
2. Spring AOP 步骤?
<1>.导入依赖
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
<2>.创建目标接口和目标实现类
<3>创建切面
//前置增强方法
public void before(){
System.out.println("前置代码增强.....");
}
<4>配置xml文件
<!-- 配置目标类 -->
<bean id="target" class="com.zn.spring.aop.Target"/>
<!-- 配置切面类(增强类) -->
<bean id="aspect" class="com.zn.spring.aop.MyAspect"/>
<5>导入aop命名空间
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context " target="_blank">http://www.springframework.org/schema/context/spring-context.xsd">
</beans>
<6>配置织入关系
Xml
<aop:config>
<!-- 这里配置的内容表示,目标对象com.zn.spring.aop.Target.method()方法执行时会在该方法执行前之调用aspect里的before方法 -->
<aop:aspect ref="aspect">
<!-- 配置切入点 execution就是切入条件(我要在那些点上做增强) -->
<!--配置目标对象Target的method方法执行时要进行myAspect的before方法前置增强-->
<aop:before method="before"
pointcut="execution(
public void com.zn.spring.aop.Target.method())"/>
</aop:aspect>
</aop:config>
java
ClassPathXmlApplicationContext applicationContext =
new ClassPathXmlApplicationContext("springContext.xml");
// TestDao dao= (TestDao) applicationContext.getBean("testDaoImpl");
TestServiceImpl testService = (TestServiceImpl) applicationContext.getBean("testService");
testService.find();
3.什么是事物?
事务是指是程序中一系列严密的逻辑操作,而且所有操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。可以通俗理解为:就是把多件事情当做一件事情来处理,好比大家同在一条船上,要活一起活,要完一起完 。
事物并发产生的问题?
1、脏读
某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个事务RollBack了操作
则后面那个事务所读取的数据就会是不正确的。
2幻读
在一个事务的两次查询总数据笔数不一致,前后多次读取,数据总量不一致
3.不重复读
在一个事物的前后多次读取,数据内容不一致,这可能是两次查询过程中间插入了个事务
更新的原有的数据
幻读和不可重复读的区别:
不可重复读指的是数据本身在一个事务里多次读取不一致。update
幻读是指的数据总量在一个事务里多次读取不一致。delete,insert.
4.MySQL事物的隔离级别?
5.为什么需要事物?
为了数据安全,为了保证数据的正确性,准确性。
6.基于@Transactional 声明事物控制
第1步:修改xml文件
<!--事务的注解驱动-->
<tx:annotation-driven/>
第2步:书写测试方法
//添加注解
@Transactional
三、.今天有什么好的表现?
认真听讲,也学了更多的新知识,AOP和事物,事物的隔离级别 和 并发事物产生的问题
四、.今天有什么不懂的吗?
今天的课上的的内容听懂了,但是容易忘,代码量还有待提升。
五、.今天有什么事发生吗?
因为昨天生病请假了,所以今天听完课,也在补第三课 Spring与Web环境集成、Spring MVC
六、.有什么需要帮助的吗?
进度比较慢,暂无其它问题。