DAY06-Sping03

作者: 建国同学 | 来源:发表于2020-04-30 09:23 被阅读0次

一、 AOP思想

  • AOP(Aspect Oriented Programming),是面向切面编程的技术,把一个个的横切关注点放到某个模块中去,称之为切面。切面的目的就是功能增强,吧需要做的事情插入切面,这种面向切面编程的思想就是 AOP 思想了。
    动态代理就可以实现 AOP


作用:

把业务方法中与业务无关的操作抽离到不同的对象中,最后使用动态代理的方式组合起来,动态地为类增加功能。

AOP术语

Joinpoint:连接点,一般指需要被增强的方法。where:去哪里做增强。
Pointcut:切入点,哪些包中的哪些类中的哪些方法,可认为是连接点的集合。where:去哪些地方做增强。
Advice:增强,当拦截到 Joinpoint 之后,在方法执行的什么时机(when)做什么样(what)的增强。根据时机分为:前置增强、后置增强、异常增强、最终增强、环绕增强。
Aspect:切面,Pointcut + Advice,去哪些地方 + 在什么时候 + 做什么增强。
Target:被代理的目标对象。
Weaving:织入,把 Advice 加到 Target 上之后,创建出 Proxy 对象的过程。
Proxy:一个类被 AOP 织入增强后,产生的代理类。

二、 AOP 实现及Pointcut表达式

AOP思想由Spring AOP(能与 Spring 无缝整合)和 AspectJ 实现 ,AspectJ 是一个面向切面的框架

  • AspectJ切入点语法



    切入点语法通配符

*  : 匹配任何部分,只能表示一个单词
.. :  可用于全限定名中和方法参数中,分别表示子包和 0 到 N 个参数

例子:
注意第一个星符号后面有空格。
execution(* cn.wolfcode.ssm.service.impl.*ServiceImpl.*(..))

三、使用XML配置AOP

添加依赖

pring-aop-5.0.8.RELEASE-sources

<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>

XML文件添加AOP约束,编写配置

编写单元测试

变更使用CGLIB

在applicationContext.xml配置如下:


四、 注解配置AOP

变更使用CGLIB

在applicationContext.xml配置如下


五、 SSM集成

  • Spring 集成 MyBatis

业务对象、Mapper对象等都交由Spring容器管理
Spring IoC 和DI来完成对象创建及其属性注入
再使用AOP来配置事务

添加依赖及插件

配置SessionSqlFactory

编写Mapper接口及对应Mapper XML文件



在配置SqlSessionFactory对象关联Mapper映射文件(可以不配置):


配置Mapper接口的代理对象

配置业务层对象


配置业务对象

编写单元测试

六、注解方式集成MyBatis

配置Mapper接口扫描器

使用注解方式配置业务对象

在业务类上贴IoC注解和DI注解


配置第三方解析程序

在applicationContext.xml中配置如下:


七、 Spring对事务支持

使用Spring管理事务的时候,针对不同的持久化技术选用不同的事务管理器:

  • JDBC / MyBatis使用DataSourceTransactionManager
  • Hibernate使用HibernateTransactionManager
  • JPA使用JpaTransactionManager

Spring实现事务的方式:
编程式事务:通过编写代码来管理事务;
声明式事务:通过XML配置或注解来管理事务。

八、使用XML配置事务

  • 通用事务配置



    方法名约定俗成,所以自己事务配置好了,业务方法名切记不要乱取了。(get,set)

九、 注解配置事务

为业务类贴注解

XML配置

Transactional注解使用

  • Transactional注解可以贴在接口或实现类上,即类或接口上的事务的配置是通用与整个类或接口的的方法;而也可以贴方法上,即方法上的的事务的配置仅限于被贴的方法。

  • 若想强制使用CGLIB动态代理,则修改<tx:annotation-drive>上的属性 proxy-target-class修改为true即可。

相关文章

  • DAY06-Sping03

    一、 AOP思想 AOP(Aspect Oriented Programming),是面向切面编程的技术,把一个个...

网友评论

    本文标题:DAY06-Sping03

    本文链接:https://www.haomeiwen.com/subject/tmmawhtx.html