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

最新文章

  1. Redis集群(四):主从配置二
  2. chown -R命令的使用
  3. python调试 设置断点
  4. Linux kernel AACRAID Driver Compat IOCTL 本地安全绕过漏洞
  5. Jni 类型转换接口
  6. HW4.1
  7. Java中double变量精确到小数点后几(2)位
  8. SQL Server 2008 允许远程链接,适用于广域网和局域网
  9. Java实现缓存(LRU,FIFO)
  10. Asp.net mvc3的“从客户端中检测到有潜在危险的 Request.Form 值”问题解决
  11. git 合并两个仓库
  12. bzoj3126[Usaco2013 Open]Photo 单调队列优化dp
  13. oracle入门之分页查询
  14. bzoj 4459: [Jsoi2013]丢番图 -- 数学
  15. #5 Python变量与输入输出
  16. TopK
  17. [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [三] 配置式爬虫
  18. SCRUM 12.21
  19. P、NP、NPC和NP-Hard相关概念的图形和解释
  20. Mac 下 SVN 的使用

热门文章

  1. ASP.NET调用存储过程并接收存储过程返回值
  2. 【JSOI 2008】 最小生成树计数
  3. JForum论坛添加UEditor文本编辑器
  4. MyBatis高级查询 存储过程
  5. bzoj 4806: 炮【dp】
  6. sql 索引详解
  7. 洛谷 P1037 产生数
  8. 洛谷 P1414 又是毕业季II(未完成)
  9. [JOI2014] 小笼包
  10. 转 awr自动收集脚本