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

做网站需要什么书商城通网站建设

做网站需要什么书,商城通网站建设,建立网站的软件,山东搜点网站建设Around的作用 既可以在目标方法之前织入增强动作#xff0c;也可以在执行目标方法之后织入增强动作#xff1b;可以决定目标方法在什么时候执行#xff0c;如何执行#xff0c;甚至可以完全阻止目标目标方法的执行#xff1b;可以改变执行目标方法的参数值#xff0c;也…Around的作用 既可以在目标方法之前织入增强动作也可以在执行目标方法之后织入增强动作可以决定目标方法在什么时候执行如何执行甚至可以完全阻止目标目标方法的执行可以改变执行目标方法的参数值也可以改变执行目标方法之后的返回值 当需要改变目标方法的返回值时只能使用Around方法 虽然Around功能强大但通常需要在线程安全的环境下使用。因此如果使用普通的Before、AfterReturing增强方法就可以解决的事情就没有必要使用Around增强处理了。 注解方式如果需要对某一方法进行增强只需要在相应的方法上添加上自定义注解即可 package com.rq.aop.common.advice;import com.rq.aop.common.annotation.MyAnnotation; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component;Aspect //标注增强处理类切面类 Component //交由Spring容器管理 public class AnnotationAspect {/*可自定义切点位置针对不同切点方法上的Around()可以这样写exAround(value methodPointcut() args(..))Pointcut(value annotation(com.rq.aop.common.annotation.MyAnnotation))public void methodPointcut(){}Pointcut(value annotation(com.rq.aop.common.annotation.MyAnnotation2))public void methodPointcut2(){}*///定义增强pointcut连接点使用annotationxxx进行定义Around(value annotation(around)) //around 与 下面参数名around对应public void processAuthority(ProceedingJoinPoint point,MyAnnotation around) throws Throwable{System.out.println(ANNOTATION welcome);System.out.println(ANNOTATION 调用方法 around.methodName());System.out.println(ANNOTATION 调用类 point.getSignature().getDeclaringTypeName());System.out.println(ANNOTATION 调用类名 point.getSignature().getDeclaringType().getSimpleName());point.proceed(); //调用目标方法System.out.println(ANNOTATION login success);} }注解类 package com.rq.aop.common.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Retention(RetentionPolicy.RUNTIME)//运行时有效 Target(ElementType.METHOD)//作用于方法 public interface MyAnnotation {String methodName () default ; }Controller package com.rq.aop.controller;import com.rq.aop.common.annotation.MyAnnotation; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping;Controller RequestMapping(/hello) public class HelloController {RequestMapping(/login/{name})MyAnnotation(methodName login)public void login(PathVariable String name){System.out.println(hello!name);} }运行结果: 匹配方法执行连接点方式 package com.rq.aop.common.advice;import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component;Aspect Component Order(0) //设置优先级值越低优先级越高 public class ExecutionAspect {Around(value execution(* com.rq.aop.controller..*.*(..)))public void processAuthority (ProceedingJoinPoint point)throws Throwable{System.out.println(EXECUTION welcome);System.out.println(EXECUTION 调用方法: point.getSignature().getName());System.out.println(EXECUTION 目标对象 point.getTarget());System.out.println(EXECUTION 首个参数 point.getArgs()[0]);point.proceed();System.out.println(EXECUTION success);} }eg. 任意公共方法的执行execution(public * *(…))任何一个以“set”开始的方法的执行execution(* set*(…))AccountService 接口的任意方法的执行execution(* com.xyz.service.AccountService.*(…))定义在service包里的任意方法的执行 execution(* com.xyz.service..(…))定义在service包和所有子包里的任意类的任意方法的执行execution(* com.xyz.service….(…)) 第一个表示匹配任意的方法返回值 …(两个点)表示零个或多个第一个…表示service包及其子包,第二个表示所有类, 第三个*表示所有方法第二个…表示方法的任意参数个数 定义在pointcutexp包和所有子包里的JoinPointObjP2类的任意方法的执行execution(com.test.spring.aop.pointcutexp…JoinPointObjP2.(…))) pointcutexp包里的任意类 within(com.test.spring.aop.pointcutexp.*) pointcutexp包和所有子包里的任意类within(com.test.spring.aop.pointcutexp…*) 实现了Intf接口的所有类,如果Intf不是接口,限定Intf单个类this(com.test.spring.aop.pointcutexp.Intf) 当一个实现了接口的类被AOP的时候,用getBean方法必须cast为接口类型,不能为该类的类型 带有Transactional标注的所有类的任意方法 within(org.springframework.transaction.annotation.Transactional) target(org.springframework.transaction.annotation.Transactional) 带有Transactional标注的任意方法 annotation(org.springframework.transaction.annotation.Transactional) within和target针对类的注解,annotation是针对方法的注解 参数带有Transactional标注的方法args(org.springframework.transaction.annotation.Transactional) 参数为String类型(运行是决定)的方法 args(String) 运行结果 切面执行顺序 异常
http://www.huolong8.cn/news/85106/

相关文章:

  • 网站设计与网页制作模板莞城区小程序app网站开发
  • 个人网站备案可以盈利吗管理咨询公司经营范围有哪些
  • 网站开发标书范本今天中美关系最新消息
  • 慈溪网站制作哪家最便宜网站建设选择服务器
  • 简历在线制作网站少儿编程加盟机构
  • 校园服装网站建设演示文稿怎么恢复网站数据库文件位置
  • 凡科网站可以做淘宝客吗做网站都需要准备什么软件
  • 建设项目从哪个网站可以查服务器有哪些
  • 网站制作 网站北京网站建设课程培训班
  • 做网站地图的步骤做游戏代练的网站
  • 根据网站集约化建设要求wordpress删除的菜单找回
  • 成都企业如何建网站led的网站建设
  • 阜阳公司网站建设网站有了订单邮箱提醒代码
  • 百度网站大全旧版福利窝又一个wordpress
  • 广州排名网站关键词优化國家建设协会官方网站
  • 网站建设与运营的课程标准襄阳微网站建设
  • 网页设计与网站建设docx怎样进WordPress
  • 网站关键词优化推广哪家好北京企业网站seo平台
  • 手机网站建站公司有哪些前端开发工资
  • 做时间轴的在线网站手机wap网站 设计
  • 手游传奇新开服网站seo百度首页排名业务
  • php免费源码网站推广普通话文字素材
  • 怎么用云服务器建设网站开发一个app的步骤
  • 做网站的人联系电话软件工程工业软件好吗
  • 帮别的公司做网站违法吗5免费建站网站
  • 建设部网站统计高水平的徐州网站建设
  • 芜湖网站建设工作室ic网站建设
  • 做网站用c 还是js网站搭建费用价格表
  • 沈阳网站seo公司中国软件公司排行
  • 文件包上传的网站怎么做静态网站开发实训的目的