SpringAOP自定义注解解决日志和签名校验.docx

SpringAOP自定义注解解决日志和签名校验.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SpringAOP自定义注解解决日志和签名校验

一、需解决的问题部分API有签名参数(signature),Passport首先对签名进行校验,校验通过才会执行实现方法。 第一种实现方式(Origin):在需要签名校验的接口里写校验的代码,例如:boolean isValid = accountService.validSignature(appid, signature, client_signature);if (!isValid) return ErrorUtil.buildError(ErrorUtil.ERR_CODE_COM_SING); 第二种实现方式(Spring Interception):利用spring的拦截器功能,对指定的接口进行拦截,拦截器实现签名校验算法,例如:mvc:interceptors mvc:interceptor mvc:mapping path=/connect/share/** / mvc:mapping path=/friend/** / mvc:mapping path=/account/get_bind / mvc:mapping path=/account/get_associate / bean class=eceptor.IdentityAndSecureInteceptor / /mvc:interceptor /mvc:interceptors  第三种实现方式(spring AOP):自定义注解,对需要进行签名验证的方法添加注解,例如:@SecureValid@ResponseBody@RequestMapping(value = /share/add, method = RequestMethod.POST)public Object addShare(HttpServletRequest req, HttpServletResponse res,InfoAPIRequestParams requestParams) { ...} 2. 日志记录功能,例如:某些接口需要记录请求和响应,执行时间,类名,方法名等日志信息。也可采用以上三种方式实现。 3.?代码性能监控问题,例如方法调用时间、次数、线程和堆栈信息等。这类问题在后一个专题提出解决方案,采用以上三种方式实现缺点太多。以下是三种实现方式比较:实现方式优点缺点Origin不采用反射机制,性能最佳逻辑复杂时,代码复用不好需要在每个接口里写入相同代码(我太懒,就想写几个字母)Spring Inter非常适合对所有方法进行拦截,例如调试时打印所有方法执行时间类似过滤器的功能,如日志处理、编码转换、权限检查是AOP的子功能不采用反射机制,性能有所影响需要在xml文件里配置对哪些接口进行拦截,比较麻烦Spring AOP使用方便,增加一个注解非常灵活,可@Before,@After,@Around等不采用反射机制,性能有所影响(性能对比后面详细展示)二、Spring AOP 自定义注解的实现在Maven中加入以下以依赖:!-- Spring AOP + AspectJ by shipengzhi -- dependency groupIdorg.springframework/groupId artifactIdspring-aop/artifactId version3.0.6.RELEASE/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-aspects/artifactId version3.0.6.RELEASE/version /dependency dependency groupIdorg.aspectj/groupId artifactIdaspectjrt/artifactId version1.6.11/version /dependency dependency groupIdorg.aspectj/groupId artifactIdaspectjweaver/artifactId version1.6.11/version /dependency dependency groupIdcglib/groupId artifactIdcglib/artifactId version2.1_3/version /dependency !-- end --在spring-***.xml中加入spring支持,打开aop功能头文件声明 :xmlns:aop=/schema/aop /schema/aop /schema/aop/spring-aop-3.0.xsd !-- 自定义AOP -- aop:aspectj-autoproxy

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档