首页 > 其他分享 >Spring笔记_动态代理

Spring笔记_动态代理

时间:2023-03-14 16:23:19浏览次数:39  
标签:事务管理 事务 Spring 切入点 代理 笔记 当前 AOP 如果

AOP

  • Target 目标对象
  • Proxy 代理 目标对象中的方法 产生结果代理类
  • joinpoint 连接点 被拦截的方法 (可以被增强的方法)
  • Pointcut 切入点 jointPoint中已经增强的为切入点
  • advice 通知、增强 在得到joinpoint之后进行增强所做的事务
  • aspect 切面 pointcut+advice
  • weaving 织入 (动词) 将切点和通知结合的过程

基于注解的AOP开发

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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/mvc  http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd">
<!--    aop的自动代理-->
    <aop:aspectj-autoproxy  proxy-target-class="true"/>
<!--    配置组件扫描-->
    <context:component-scan base-package="com.spring"/>
</beans>

事务的传播行为

REQUIRED: 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般的选择(默认值)

A调B时若A中没有事务则新建一个事务若A中有事务则将B加入到A中

SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)

A调B若A中有事务则支持当前事务,如果当前没有事务就以非事务方式执行

REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起。

NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

NEVER:以非事务方式运行,如果当前存在事务,抛出异常

NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行 REQUIRED 类似的操作

超时时间:默认值是-1,没有超时限制。如果有,以秒为单位进行设置

是否只读:建议查询时设置为只读

编程式事务控制的三个对象

  • PlatformTransactionManager 控制行为 不同的api(取决于用什么平台)
  • TransactionDefinition维护属性信息 封装事务参数
  • TransactionStatus状态信息

PlatformTransactionManager+TransactionDefinition=TransactionStatus

声明式事务控制

基于xml

采用xml声明的方式来处理事务

作用

  • 事务管理不侵入开发的组件,事务管理和开发组件解耦合,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在定义文件中重新配置即可。(AOP思想)
  • 在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便
 <!--    平台事务管理器-->
     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
         <property name="dataSource" ref="dataSource"/>
     </bean>
<!--    设置事务属性信息-->
    <tx:attributes>
<!--        切点-->
        <tx:method name="*"/>
<!--        以update开头的所有方法-->
        <tx:method name="update*"/>


    </tx:attributes>
</tx:advice>
<!--    配置事务织入-->
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.spring.demo.*.*(..))"/>
    </aop:config>

切入点表达式:

表示拦截器那些类和那些方法

标签:事务管理,事务,Spring,切入点,代理,笔记,当前,AOP,如果
From: https://www.cnblogs.com/EnkiZhangBlog/p/15900583.html

相关文章

  • SpringMVC WEB项目文件夹上传下载解决方案
    ​  一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载......
  • Spring中的单例和多例的区别
    Spring中的单例和多例的区别https://blog.csdn.net/qq_41369135/article/details/1241034271,什么是单例和多例单例:所有请求用同一个对象来处理。通过单例模式,可以保证......
  • TypeScript 学习笔记 — infer 类型推导、类型兼容 (九)
    目录1.ReturnType返回值类型2.Parameters参数类型3.InstanceType实例类型4.ConstructorParameters构造函数参数类型5.infer实践更改元组类型将元组转换成联合类型获取......
  • 数据结构笔记
    数据结构笔记二叉树遍历方式:前序遍历:打印-左-右中序遍历:左-打印-右后序遍历:左-右-打印Pair头文件:#includepair<类型1,类型2>变量名;pair<int,int>a(......
  • openwrt通过USBmodem收发SMS笔记(未完成)
    1、安装包:kmod-usb-serialkmod-usb-serial-optionusb-modeswitchusbutils2、USB口的打开、关闭https://openwrt.org/docs/guide-user/hardware/usb.overviewOn:echo......
  • 【教程】SpringCloud+Nacos+Feign+Gateway搭建教程(推荐)
    【教程】SpringCloud+Nacos+Feign+Gateway搭建教程(推荐)【教程】SpringCloud+Nacos+Feign+Gateway(一)NacosServer注册中心服务端项目(推荐)参考代码:https://gitee.com......
  • python 爬虫ip代理
    新建proxy_list.txt文本,一行一个ip代理ip地址,必要情况下可以加上端口号importrequestsurl='www.920vip.net'headers={'User-Agent':"Mozilla/5.0(WindowsNT6.1......
  • Spring 核心概念
    微信公众号:运维开发故事作者:老郑在前一篇我们了解了SpringIOC,SpringAOP的强大,以及对我们编程范式,编程基础的影响。接下来我们一起来聊一下Spring基础概念。对于基础......
  • 盘点爬虫HTTP代理使用的常见问题及解决思路
    在使用爬虫HTTP代理过程中经常会遇到一些奇奇怪怪的问题,常见的可能就是超时、访问速度慢,今天就来跟大家探讨下哪些情况下容易出现这种问题,以及如何测试并解决。1、......
  • 手撕Spring6教程(六)第一个Spring程序的深度剖析
    第一个Spring程序详细剖析本篇文章说说Spring的第一个程序详细的剖析,上篇说了spring第一个程序的前期准备工作​​https://blog.51cto.com/u_15485663/6110947​​配合视频......