17Aspectij-2018/07/31

  • 1.Aspectj基于xml

    • 前置通知

      • method : 通知,及方法名
      • pointcut :切入点表达式,此表达式只能当前通知使用。
      • pointcut-ref : 切入点引用,可以与其他通知共享切入点。
      • 通知方法格式:public void myBefore(JoinPoint joinPoint){参数1:org.aspectj.lang.JoinPoint } 用于描述连接点(目标方法),获得目标方法名等
    • 后置通知:目标方法后执行,获得返回值
      • 通知方法格式:public void myAfterReturning(JoinPoint joinPoint,Object ret){

        • 参数1:连接点描述
        • 参数2:类型Object,参数名 returning="ret" 配置的
    • 环绕通知
      • 通知方法格式:public Object myAround(ProceedingJoinPoint joinPoint) throws Throwable{

        • 返回值类型:Object
        • 方法名:任意
        • 参数:org.aspectj.lang.ProceedingJoinPoint
        • 抛出异常
      • 执行目标方法:Object obj = joinPoint.proceed();
    • 抛出异常
      • <aop:after-throwing method="" pointcut-ref="" throwing=""/>

        • throwing :通知方法的第二个参数名称
      • 通知方法格式:public void myAfterThrowing(JoinPoint joinPoint,Throwable e){
        • 参数1:连接点描述对象
        • 参数2:获得异常信息,类型Throwable ,参数名由throwing="e" 配置
  • 2.注解在方法前面注解
    • 声明公共切入点

      • @Pointcut("execution(* com.itheima.daspect.banno.UserServiceImpl.*(..))")private void myPointCut(){}
    • @Before(value="myPointCut()")value可以省略
    • @AfterReturning(value="myPointCut()" ,returning="ret")
    • @Around("myPointCut()")
    • @AfterThrowing(value="execution(* com.itheima.daspect.banno.UserServiceImpl.*(..))" ,throwing="e")
  • 3.JdbcTemplate
    • 创建数据源(连接池) dbcp

      BasicDataSource dataSource = new BasicDataSource(); 
      // 基本4项
      dataSource.setDriverClassName("com.mysql.jdbc.Driver");
      dataSource.setUrl("jdbc:mysql://localhost:3306/ee19springday02");
      dataSource.setUsername("root");
      dataSource.setPassword("1234");
    • 创建模板 
      JdbcTemplate jdbcTemplate = new JdbcTemplate();
      jdbcTemplate.setDataSource(dataSource);
    • 通过api操作 
      jdbcTemplate.update("insert into t_user(username,password) values(?,?);", "tom","998");
  • 4.传播行为:在两个业务之间如何共享事务
    • PROPAGATION_REQUIRED , required , 必须 【默认值】 支持当前事务,A如果有事务,B将使用该事务。 如果A没有事务,B将创建一个新的事务。
    • PROPAGATIONREQUIRESNEW , requires_new ,必须新的 如果A有事务,将A的事务挂起,B创建一个新的事务 如果A没有事务,B创建一个新的事务
    • PROPAGATION_NESTED ,nested ,嵌套 A和B底层采用保存点机制,形成嵌套事务。
  • 5.手动管理事务
    • 1.service 需要获得 TransactionTemplate
    • 2.spring 配置模板,并注入给service
    • 3.模板需要注入事务管理器
    • 4.配置事务管理器:DataSourceTransactionManager ,需要注入DataSource

17Aspectij的更多相关文章

随机推荐

  1. 【bzoj4542】[Hnoi2016]大数

    #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> # ...

  2. go7---map

    package main /* map 类似其它语言中的哈希表或者字典,以key-value形式存储数据 Key必须是支持==或!=比较运算的类型,不可以是函数.map或slice, 这3中类型都不能 ...

  3. 【Silverlight】Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer)(转)

    [Silverlight]Bing Maps学习系列(四):使用图钉层(Pushpin layer)及地图图层(MapLayer) 如果我们需要在Bing Maps中加入一个小图钉标记,该如何实现了? ...

  4. Bing必应地图中国API一显示地图 (转) 做人要厚道

    Bing必应地图中国API一显示地图 2011-05-24 14:27:31|  分类: Bing&Google|字号 订阅     微软必应地图中国地图API发布已经有10天了,考虑到网上现 ...

  5. Called attach on a child which is not detached

    问题:Called attach on a child which is not detached: ViewHolder#出现问题的原因 经过google后发现,出现该问题的原因是由于recycle ...

  6. hdoj--2186--悼念512汶川大地震遇难同胞——一定要记住我爱你(模拟水题)

     悼念512汶川大地震遇难同胞--一定要记住我爱你 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  7. POJ1259 The Picnic 最大空凸包问题 DP

    POJ1259 给定平面上100个点 求一个最大的凸包,使得它不包含其中任意点,且凸包的顶点是题目所给的点. 枚举凸包左下角的点,顺时针枚举第二个点, 用opt[i][j]记录 i作为第二个点, 且第 ...

  8. WP8 中使用HTML Agility Pack与友盟分享SDK遇到的 System.Xml.XPath加载问题

    今晚在尝试使用友盟最新的社交分享SDK时,按照官方Demo,并未做多少多少改动,就是去除了对微信.脸书和推特的分享.然后运行之后就一直报错 : {System.IO.FileLoadException ...

  9. E20180121

    signature  n. 签名; 署名; 识别标志,鲜明特征; [医] 药的用法说明;

  10. VUE学习之计算属性computed

    计算属性:computed 先看一下官网的说法 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="ex ...