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

论论坛坛网网站站建建设设江阴网站设计

论论坛坛网网站站建建设设,江阴网站设计,做外贸是用什么网站做,唐山如何做百度的网站建设AOP AOP全称是Aspect Oriented Programming 即面向切面编程#xff0c;是对一类统一事务的集中处理 例如#xff0c;我们的网页许多地方都需要进行登陆验证#xff0c;这时就需要在很多地方添加重复的验证代码#xff0c;而AOP可以集中配置需要登陆验证的地方#xff0c;…AOP AOP全称是Aspect Oriented Programming 即面向切面编程是对一类统一事务的集中处理 例如我们的网页许多地方都需要进行登陆验证这时就需要在很多地方添加重复的验证代码而AOP可以集中配置需要登陆验证的地方就可以简化我们的代码 除此以外还可以实现 统一日志的记录统一方法执行的时间记录统一返回格式的设置统一异常的处理事务的开启和提交 springAOP 就像IoC是思想而DI是实现SpringAOP也是对AOP这种思想的实现 基本组成 切面用来处理问题的一个类包含切点和通知的相关方法切点用来设置拦截的规则通知程序拦截后进行的具体操作连接点触发AOP相关规则的点 其中对于通知还有下面几种不同的分类 前置通知 使用Before注解在目标方法执行前执行后置通知使用After注解在目标方法返回或抛出异常后执行返回通知使用AfterRetruning注解在目标方法返回后执行异常通知使用AfterThrowing注解在目标方法抛出异常后执行环绕通知使用Around注解在包裹的方法执行前后执行后执行 也就是说page123是需要验证是否登陆的页面也就是连接点 验证是否登陆的这个方法就是切点 处理用户登陆问题是通知 而整个验证用户登陆的这个行为称为切面 实现 首先在程序中加入SpringAOP的相关依赖 !-- https://mvnrepository.com/artifact/org.springframework.boot/spring-bo ot-starter-aop -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency在程序中专门建一个类用来存储切面 Aspect Component public class 切面方法名{Poiontcut(execution(修饰符 返回类型 包名.类名.方法名(参数) 异常))public void 切点方法名(){} }其中Aspect注解代表此类是切面 而Component注解使该类在运行时启动 这里的切点方法并没有具体的实现只是用来为通知方法标明执行的是那个切点 而Pointcut注解后面的表达式则是标明拦截的规则 并且表达式中还支持通配符 *匹配任意字符只匹配一个元素…匹配任意字符匹配多个元素匹配指定类及其子类 也就是说 修饰符 例子表达public匹配所有公共方法*匹配所有方法 返回值不能省略 例子表达String匹配所有返回String的方法*匹配所有方法 包名 例子表达com.example.demo匹配com.exaple.demo这个包com.*.demo匹配前面是com结尾是demo的包com.demo…匹配com下面的所有子包 类名 例子表达User匹配User类User*匹配以User开头的类*匹配所有类 方法名不能省略 例子表达getUser匹配getUser这个方法*getUser匹配以getUser结尾的方法*匹配所有方法 参数 例子表达()匹配没有参数的方法(int, float)匹配一个int一个float参数的方法(…)匹配任意类型的参数 例如 定义一个匹配com.example.demo.controller包下UserController的任意方法 Component //随框架启动而启动 Aspect //切面类 public class UserAspect {/*** 定义切点*/Pointcut(execution(* com.example.demo.controller.UserController.*(..)))public void pointcut(){} }实现通知 前置通知 /*** 前置通知*/ Before(pointcut()) public void beforeAdvice(){System.out.println(执行前置通知); }后置通知 /*** 后置通知*/ After(pointcut()) public void afterAdvice(){System.out.println(执行后置通知); } 环绕通知 /*** 环绕通知*/ Around(pointcut()) public Object aroundAdvice(ProceedingJoinPoint joinPoint){System.out.println(进入环绕通知);Object object null;try{//执行拦截方法object joinPoint.proceed();} catch (Throwable e) {e.printStackTrace();}System.out.println(结束环绕通知);return object; }返回通知 AfterReturning(pointcut()) public void returnAdvice(){System.out.println(执行返回通知); }异常通知 AfterThrowing(pointcut()) public void throwAdvice(){System.out.println(执行抛出异常通知); }把UserController类定义出来验证一下这些通知是否执行 RequestMapping(/user) RestController public class UserController {RequestMapping(/hi)public String sayHi(String name){System.out.println(执行sayHi方法);return hi name;}RequestMapping(/hello)public String sayHello(){System.out.println(执行sayHello方法);return hello world;} }在访问127.0.0.1:8080/user/hi页面时程序台就会打印如下信息 实现原理 springAOP只支持方法级别的拦截这是因为其基于动态代理实现 其中分别用JDK Proxy实现接口的类生成代理类和CGLIB没实现接口的类生产代理类 把切面连接到目标对象的相关位置连接点的行为叫织入 其中一般在目标对象的这几个时期织入 编译器类加载期代码运行期SpringAOP实现方式
http://www.dnsts.com.cn/news/104573.html

相关文章:

  • idc网站模板源码下载昆明网红打卡地
  • vs2012网站开发怎么查网站是用什么语言做的
  • 可以做电算化的网站免费模板网站知乎
  • 重庆建设工程造价管理协会网站性价比高的网站建设
  • 礼品册兑换 网站建设智慧团建在线登录
  • 手机做网站的网站不需要丢链接可以百度收录的网站
  • ps企业站网站做多大的网页编辑简单分为网页美工编辑和
  • 成都网站建设模版国外做滑板网站
  • 网站备案帐号是什么意思the7企业中英文wordpress模板
  • 网站建设看什么书crm系统开发
  • 找哪些公司做网站浙江新手网络推广
  • 常州网站支付通道建设网站开发和ipv6
  • 做网站6000左右的电脑wordpress无刷新分页
  • 怎样免费做彩票网站珠宝网站模板
  • 专业建站网站服务网站上线前要做哪些准备
  • 网站做百度竞价厦门模板建站哪家好
  • 网站建设考虑的因素茶叶网站建设策划书
  • 昆山做网站的那家好哈尔滨招标信息网官网
  • 专业的集团网站开发开发动漫设计难不难学
  • 宝安公司免费网站建设wordpress搭建软件下载
  • 想做一个网站平台怎么做的七牛云建网站
  • 广告网站制作多少钱常州建站优化
  • 长春火车站现在正常通车吗深圳响应式网站开发
  • 大学生兼职网站设计论文官方网站建设银行信用卡
  • 小说网站建设方案书海南综合网站
  • 攻击网站步骤正能量不良网站推荐2020
  • 石家庄专业做网站注册电气工程师报考条件
  • 深圳网站建设合同范本买奢侈品代工厂做的产品的网站
  • 织梦网站上传保存文档a wordpress
  • 做网站保存什么格式最好网站缓存优化怎么做