当前位置: 首页 > news >正文

博白建设局网站张店网站建设公司

博白建设局网站,张店网站建设公司,石家庄房地产信息网,上海公司注册代理的发展执行时间获取:记录开始时间和结束时间#xff0c;取差值。 这里使用环绕通知来实现。 环境准备: 项目文件结构: 业务层接口和实现类: 数据层: 采用mybatis注解开发#xff0c;这里没有实现类#xff0c;直接在接口方法里面实现映射。 domain层: 实现了数据库里面每一个… 执行时间获取:记录开始时间和结束时间取差值。 这里使用环绕通知来实现。 环境准备: 项目文件结构: 业务层接口和实现类: 数据层: 采用mybatis注解开发这里没有实现类直接在接口方法里面实现映射。 domain层: 实现了数据库里面每一个属性的setter和getter方法以及一个tostring方法。 jdbc.properties文件下 SpringConfig配置类里面加载了 properties文件和jdbc以及mybatis的配置 Jdbc配置文件下: 使用一个Druid作为数据源  Mybayis配置文件下 加载了两个bean一个是SqlSessionFactory的bean还有一个映射扫描的bean。 测试代码 在test目录下整合了一个JUnit的测试类并有两个查询的方法测试 AOP层: 现在SpringConfig配置类上添加一个发现Aspet的注解 再创建一个通知类在里面定义一个切入点包含了业务层的所有操作然后使用环绕通知的方式测试业务层接口执行万次的效率。  正常输出 现在的运行方法无法得知测试的是哪一个接口的哪一个实现类为此需要获取是哪一个连接点的信息用到了上面环绕方法中的属性参数 ProceedingJoinPoint这个就是执行的连接点。 现在使用一个它下面的一个方法getSignature(),获取一次执行的签名信息里面封装了一次执行的过程。Signature下的get方法就可以获取到很多信息 输出得到了一次执行里面的类型和方法名 AOP通知获取数据 获取原始操作的参数获取原始操作的返回值获取原始操作的异常 环境准备二:  Dao层的借口实现类模拟根据id查询姓名 测试代码里面: 在前置通知里面获取参数 使用一个JoinPoint用它下面的getArgs方法获取原始方法的参数 Before(pt())public void before(JoinPoint jp){Object[] args jp.getArgs();System.out.println(Arrays.toString(args));System.out.println(before advice...);} 输出为一个参数构成的数组有多个参数就有多个不同类型的数据 在后置通知里面获取参数 和在前置通知获取参数一模一样 After(pt())public void after(JoinPoint jp){Object[] args jp.getArgs();System.out.println(Arrays.toString(args));System.out.println(after advice...);} 在环绕通知里面获取参数和返回值和异常 和上面类似只是从JoinPoint改成了ProceedingJoinPoint另外这里面的args可以修改。但是数量和类型必须对应相同这就是数据劫持         Around(pt())public Object around(ProceedingJoinPoint pjp) throws Throwable {Object[] argspjp.getArgs();System.out.println(Arrays.toString(args));args[0]150;Object ret pjp.proceed(args);return ret;} 输出如图原本在环绕通知里面刚获取到时是100经过修改返回了一个150. 异常获取 使用catch环绕其中的Throwable属性的参数就是异常 Around(pt())public Object around(ProceedingJoinPoint pjp) {Object[] argspjp.getArgs();System.out.println(Arrays.toString(args));args[0]150;Object ret null;try {ret pjp.proceed(args);} catch (Throwable e) {throw new RuntimeException(e);}return ret;} 在返回后通知里面获取返回值 解释为如果过原始方法又返回值就把它装到原始变量叫ret的形参当中 AfterReturning(valuept(),returning ret)public void afterReturning(Object ret){System.out.println(afterReturning advice...ret);} 正常输出 如果参数列存在两个参数必须是JoinPoint在前面 AfterReturning(valuept(),returning ret)public void afterReturning(JoinPoint jp,Object ret){System.out.println(afterReturning advice...ret);} 异常后通知获取异常 和上面返回后通知获取返回值类型 AfterThrowing(valuept(),throwing t)public void afterThrowing(Throwable t){System.out.println(afterThrowing advice...t);} 在原始方法中出现一个异常 Repository public class BookDaoImpl implements BookDao {public String findName(int id){System.out.println(id:id);if(true) throw new NullPointerException();return itcast;} } 输出如下 AOP总结
http://www.dnsts.com.cn/news/215130.html

相关文章:

  • 网页制作怎么上传到网站wordpress page id
  • 百度调整导致网站排名下降公司网站是否有必要销售产品
  • 产品网站定制网站建站 免费
  • 网站为什么要seo?没有备案的网站百度能收录吗
  • 淘宝怎么才能发布网站建设wordpress不用插件
  • 高质量的合肥网站建设会员营销方案
  • 自适应网站开发seo注册公司的条件和要求
  • 网站如何申请微信支付功能卢松松是用的wordpress
  • 深圳最好的做网站电子商务网站建设需要的语言及特点6
  • 门户网站收录网站架构师工资
  • 杭州开发区建设局网站做网站费用
  • 有没有做长图的网站淮南服装网站建设费用
  • 昌乐哪里有做网站的网站更新seo
  • 门户网站怎么做网页制作成品
  • 网站里自动切换图片怎么做构建大型网站
  • iis网站右键没有属性网络推广专员考核指标
  • 南京网站托管网络营销外包好看的404页面html
  • seo网站关键词优化方法微信商城登录平台
  • 市场调查 网站建设互联网推广开户
  • 企业推广建站proplayer wordpress
  • 做图片赚钱的网站上海网站建设润滋
  • 重庆承越网站建设公司怎么注册公司要多少钱
  • 前端开发 网站建设企业信息公开网查询系统
  • 网站建设的语言网站建设的好公司
  • 188旅游网站源码下载wordpress菜单栏的函数调用
  • 导航网站 win8风格网页设计需要的软件
  • 网站开发违约解除合同通知函网站公告设计
  • 东莞加盟网站建设网站定制制作公司
  • 笨鸟网站开发怎么做网页链接跳转
  • 网站开发周期安排美工培训班哪家好