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

电子商务是建网站企业网站设计欣赏

电子商务是建网站,企业网站设计欣赏,网页设计暑期班,小程序api简介 AOP(Aspect Oriented Programing)面向切面编程#xff0c;一种编程范式#xff0c;指导开发者如何组织程序结构 作用 在不惊动原始设计的基础上为其进行功能增强 Spring理念#xff1a;无入侵式/无侵入式 基本概念 连接点(JoinPoint) : 程序执行过程中的任意位置一种编程范式指导开发者如何组织程序结构 作用 在不惊动原始设计的基础上为其进行功能增强 Spring理念无入侵式/无侵入式 基本概念 连接点(JoinPoint) : 程序执行过程中的任意位置粒度为执行方法、抛出异常、设置变量等 在SpringAOP中理解为方法的执行 切入点(Pointcut) : 匹配连接点的式子 在SpringAOP中一个切入点只描述一个具体方法也可以匹配多个方法 一个具体方法e.g.dao类中的save方法 匹配多个方法所有的save方法所有以get开头的方法所有以Dao结尾的接口中的任                  意方法所有带有一个参数的方法 通知(Advice) : 在切入点执行的操作也就是共性功能 在SpringAOP中功能最终以方法的形式呈现 通知类定义通知的类 切面(Aspect) : 描述通知与切入点的对应关系 实现案例 第一步、导入相关坐标 dependenciesdependencygroupIdorg.springframework/groupIdartifactIdspring-context/artifactIdversion5.2.10.RELEASE/version/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.9.4/version/dependency/dependencies 第二步、定义dao接口与其实现类 package com.cacb.dao.impl;import com.cacb.dao.BookDao; import org.springframework.stereotype.Repository;Repository public class BookDaoImpl implements BookDao {Overridepublic void save() {System.out.println(System.currentTimeMillis());System.out.println(BookDao saving!);}Overridepublic void update() {System.out.println(BookDao updating!);} }第三步、定义通知类制作通知 public class MyAdvice {public void method(){System.out.println(System.currentTimeMillis());} }第四步、在通知类中定义切入点 public class MyAdvice {Pointcut(execution(void com.cacb.dao.BookDao.update()))private void pt(){}public void method(){System.out.println(System.currentTimeMillis());} }注 切入点定义依托一个不具有实际意义的方法进行即无参数无返回值方法体无实际逻辑 第五步、在通知类中绑定切入点预通知关系并指定通知添加到原始连接点的具体执行位置 public class MyAdvice {Pointcut(execution(void com.cacb.dao.BookDao.update()))private void pt(){}Before(pt())public void method(){System.out.println(System.currentTimeMillis());} }第六步、定义通知类受Spring容器管理并定义当前类为切面类  Component Aspect public class MyAdvice {Pointcut(execution(void com.cacb.dao.BookDao.update()))private void pt(){}Before(pt())public void method(){System.out.println(System.currentTimeMillis());} }第七步、在Spring核心配置文件中开启Spring对AOP注解驱动支持 Configuration ComponentScan(com.cacb) EnableAspectJAutoProxy public class SpringConfig { }AOP工作流程 1.Spring容器启动 2.读取所有切面配置中的切入点 3.初始化Bean判定Bean对应的类中的方法是否匹配到任意切入点 匹配失败则创建对象 匹配成功则创建原始对象(目标对象)的代理对象 4.获取Bean执行方法 获取Bean调用方法并执行完成操作 获取的Bean是代理对象时根据代理对象的运行模式运行原始方法与增强的内容完成操作 目标对象(Target) : 原始功能去掉共性功能对应的类产生的对象这种对象是无法直接完成最终工作的 代理(Proxy) : 目标对象无法直接完成工作需要对其进行功能回填通过原始对象的代理对象实现 APO切入点表达式 切入点要进行增强的方式 切入点表达式要进行增强的方法的描述方式 以上例update()方法为例共有两种描述方式 方式一:接口方式 Pointcut(execution(void com.cacb.dao.BookDao.update())) 方式二实现类方式 Pointcut(execution(void com.cacb.dao.impl.BookDaoImpl.update())) 切入点表达式标准格式动作关键字(访问修饰符 返回值 包名.类/接口名.方法名 (参数)异常名) 动作关键字描述切入点的行为动作例如execution表示执行到指定切入点 访问修饰符publicprivate等可以省略 异常名方法定义中抛出指定异常可以省略 通配符 可以使用通配符描述切入点快速描述 * 单个独立的任意符号可以独立出现也可以作为前缀或者后缀的匹配符出现 execution(public * com.cacb.*.UserService.find* (*)) 匹配com.cacb包下的任意包中的UserService类或接口中所有find开头的带有一个参数的方法 .. 多个连续的任意符号可以独立出现常用于简化包名与参数的书写 execution(public User com..UserService.findById (..)) 匹配com包下的任意包中的UserService类或者接口中的所有名称为findById的方法 专用于匹配子类类型 execution(* * ..*Service.* (..)) AOP通知类型 AOP通知描述了抽取的共性功能根据共性功能抽取的位置不同最终运行代码时要将其加入到合理的位置 AOP通知共分为五种类型 前置通知 Before() 后置通知 After() 环绕通知 Around()public void around(ProceedingJoinPoint pjp) throws Throwable{//..原方法前操作pjp.proceed(); //表述对原始操作的调用//..原方发后操作} 如果原方法有返回值  Around()public Object around(ProceedingJoinPoint pjp) throws Throwable{//..原方法前操作Object result pjp.proceed(); //表述对原始操作的调用//..原方法后操作return result} 返回后通知 AfterReturning() 只有在调用方法没有抛出异常正常运行结束后该通知才会运行  抛出异常后通知 AfterThrowing() 只有在调用方法抛出异常后才会运行 Around注意事项 1.环绕通知必须依赖形参ProceedingJoinPoint才能实现对原始方法的调用进而实现原始方法调用前后同时添加通知 2.通知中如果未使用ProceedingJoinPoint对原始方法进行调用将跳过原始方法的执行 3.对原始方法的调用可以不接收返回值通知方法设置成void即可如果接收返回值必须设定为Object类型 4.原始方法的返回值如果是void类型通知方法的返回值类型可以设置成void也可以设置成Object 5.由于无法预知原始方法运行后是否会抛出异常因此环绕通知方法必须抛出Throwable对象 AOP通知获取数据 获取参数 JoinPoint适用于前置、后置、返回后、抛出异常后通知 ProceedingJoinPoint适用于环绕通知 获取返回值 返回后通知 环绕通知 获取异常 抛出异常后通知 环绕通知
http://www.hkea.cn/news/14362371/

相关文章:

  • 个人网站建设免费主机安徽建设厅城乡官网
  • 购物平台网站建设框架找人做网页需要多少钱
  • 美丽乡村建设网站php源码网站服务器升级需要多久
  • 大良营销网站建设流程辽宁建设工程信息网业绩公示多久啊
  • 一套企业网站设计图片封面型网站布局
  • 网站tag标签功能实现自己有域名服务器怎样建设网站
  • id97网站怎么做的wordpress初级教程老左
  • 站长工具友链检测网站框架搭建设计
  • 国外中文网站排行电商平台门户网站建设的重要性
  • 招聘类网站建设做的网站很卡是什么原因呢
  • 老外做的汉语网站免费自建网站工具
  • 合肥企业自助建站怎样做有效的黄页网站
  • 网站建设死人接单报告老师怪怪怪怪物
  • 商城网站建设包括哪些网站如何免费做SEO优化
  • 国内工业设计网站上海品牌全案设计
  • 门户网站系统建设项目招标书塘沽网站建设
  • 开平建设局网站知名网站有哪些
  • 可以做申论的网站wordpress 集成支付宝
  • 有没有正规的毕设代做网站手机网站seo
  • 快速将网站seo柳州网络推广公司
  • 龙岩做网站开发哪家厉害海口正规官网设计公司
  • 有官网建手机网站手机做广告设计用什么软件
  • 东莞网站建设曼哈顿新科网站建设方案说明书
  • 成都网站seo排名无锡网站设计哪家公司好
  • 网上购物正品网站青岛网站美工
  • 以营销导向型建设网站方案网页小游戏制作
  • 网站读取错误时怎样做wordpress小工具缓存
  • 有哪些好的ps素材网站济南网站外包
  • 怎么自己做个网站做链接跳转国家反诈中心app下载注册
  • 建设专门网站 强化信息宣传建立网站平台需要多少钱