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

北京网站设计联系电话专业网站建设咨询

北京网站设计联系电话,专业网站建设咨询,企业如何进行网站推广,装修公司装修房子目录 AOP 理解AOP AOP组成 AOP的优点 Spring AOP 使用Spring AOP 定义切面和切点 定义通知 动态代理 织入 AOP 理解AOP AOP即面向切面编程#xff0c;简单来说#xff0c;就是把一部分通用的功能集中的放在一个地方处理的思想。假如某一段代码很多地方要用到简单来说就是把一部分通用的功能集中的放在一个地方处理的思想。假如某一段代码很多地方要用到比如说登录验证在传统编程中有两个做法要么每次复制粘贴要么把他封装成一个函数再调用。复制粘贴显然是最坏的一种做法一旦涉及到修改就会很麻烦。因此封装成函数是一种更优的做法。而AOP可以看作是一种更为高级和抽象的封装它可以动态地植入通用功能。Spring AOP是AOP思想的一种具体实现。 AOP组成 AOP的基本组成包含切面(Aspect)、切点(Pointcut)、连接点(Joinpoint)、通知(Advice)。 切面(Aspect)由连接点、切点和通知组成。简单来说切面就是一个包含了连接带你、切点和通知的类。即实现某个或某些功能的集合。连接点(Joinpoint)程序运行时可以切入切面执行通知的点。例如执行方法前、执行方法后、程序异常时等都可以作为连接点。切点(Pointcut)提供规则匹配符合要求的连接点。满足切点规则的连接点才可以切入切面执行逻辑。通知(Advice)包括切入切面后执行的功能和执行时机。可以使用注解的方式来确定执行时机。 AOP的优点 提高代码复用性和可维护性 AOP可以像函数封装那样不必重复写相同的代码提高开发的效率AOP可以把不同的业务功能分块例如日志、安全等模块分成不同的切面在每个切面处理特定的功能 Spring AOP Spring AOP虽然属于Spring全家桶的产品但是在创建项目时并不能找到相应的依赖 因此需要自行添加注意版本号 !-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactIdversion2.7.13/version /dependency使用Spring AOP 定义切面和切点 使用Aspect注解表示当前类为一个切面使用Pointcut注解定义切点即设定规则 Component Aspect public class ExperimentalAspect {Pointcut(execution(* com.example.demo.controller.ExperimentalController.*(..)))public void pointcut() {}// 空方法只起到标识的作用} Pointcut注解的参数是一个切点表达式用于匹配连接点。使用AspectJ语法。切点表达式由切点函数组成如execution()、within()、target()、annotation()等其中最常用的时execution()函数用来匹配方法连接点语法为 execution(访问权限修饰符可省略返回类型包.类.方法(参数)异常可省略) 访问权限修饰符省略不写表示匹配所有权限除参数部分外任意一个部分都可以使用通配符*来匹配任意字符例如返回类型使用*表示任意返回值都满足规则。 参数中写具体的类型例如(int)表示参数为一个整型使用..表示任意参数都满足。 上文的Pointcut参数的含义就是匹配任意权限且在ExperimentalController包中的任意方法返回值任意参数任意 其他切点函数用法可以参考Spring官网Declaring a Pointcut :: Spring Framework 定义通知 Spring AOP通知注解包括 Before——方法执行前执行通知After——方法执行后执行通知方法执行失败也会执行通知AfterReturning——方法返回后成功执行方法执行通知AfterThrowing——抛出异常时执行通知Around——方法执行前后执行通知 // 执行前置通知 Before(pointcut()) public void runBefore() {System.out.println(执行了前置通知); } // 执行后置通知 After(pointcut()) public void runAfter() {System.out.println(执行了后置通知); } 类似的AfterReturning和AfterThrowing写法一样注解参数设置为上文设置的声明切点规则的函数名即可。 Around注解除了遵守这个规则外还需要设置返回值为Object类参数设置为ProceedingJoinPoint类 Around(pointcut()) public Object runAround(ProceedingJoinPoint joinPoint) throws Throwable {System.out.println(开始执行环绕方法);Object obj null;// 执行拦截方法obj joinPoint.proceed();System.out.println(结束执行环绕方法);return obj; } 动态代理  Spring AOP是基于动态代理技术实现的。调用者首先要通过代理才能到达目标对象就比如说破在内陆访问chatgpt就要先通过代理代理就会把这些请求拦截下来因此在内陆无法访问chatgpt等。动态代理包含两种方式JDK动态代理和CGLib动态代理。 JDK动态代理被代理类需要实现接口然后通过反射机制生成代理对象。CGLib动态代理被代理类可以不实现接口通过继承被代理类的方式生成代理对象。 Spring AOP默认使用JDK动态代理如果没有实现接口就使用CGLib动态代理。 在Spring Boot2.x以后默认使用CGLib动态代理。如果目标类实现了至少一个接口就会优先考虑使用JDK动态代理。 可以在配置文件中设置属性为true强制使用CGLib代理false强制使用JDK代理 // 强制使用CGLib代理 spring.aop.proxy-target-classtrue 织入 织入把切面应用到目标对象并创建新的代理对象的过程切面在指定的连接点被织入到目标对象中。简单来说就是动态代理的生成时机。织入可以在编译期、类加载期和运行期。Spring AOP是在运行期织入切面的。
http://www.pierceye.com/news/40210/

相关文章:

  • 中山做网站排名山东省技术标准创新中心
  • 货架网站开发做网站全程指导
  • 铁岭做网站一般多少钱seo公司 彼亿营销
  • 石岩小学网站建设wordpress 手机编辑器
  • 旅游景区网站建设方案青岛网站seo推广
  • 泗泾做网站临沂市建设安全管理网站
  • 成都网站建设kaituozu赚钱的软件
  • 百度收录好最快的网站宁波网站建设公司名单推荐
  • changer网站建设nodejs做网站
  • 呼市做网站的公司蒙晟建设有限公司官方网站
  • 网上花钱做ppt的网站响应式网站新闻部分怎么做
  • asp 课程教学网站开发wordpress开发视频网站模板下载
  • 江宁交通建设集团网站中建名城建设有限公司 网站
  • 买了个域名怎么做网站曹县汽车网站建设
  • 东莞网站建设纸品包装网站该怎么找到
  • 苏州建网站要多少钱制作图网官网
  • 怎么免费做一个网站网站设计项目建设内容
  • uni做网站首页邵阳 网站开发 招聘
  • 广西上林县住房城乡建设网站建手机网站教程
  • 中国建设企业协会网站首页手机网站 触屏
  • 网站建设流程有几个阶段电子商务网站开发 微盘下载
  • wordpress多站点不同主题自己个人网站后台怎么做
  • 网站网页设计教程中装建设属于什么板块
  • 东莞建设工程交易中心网站浙江建设工程信息网查询平台
  • 织梦如何做网站留言功能wordpress图库
  • 南通网站托管如何注册网址
  • 微信公众号里的小网站怎么做的有哪些做软件的网站
  • 学校网站建设问卷调查梁山网站建设电话
  • 网站建设开发费用预算数字化转型
  • 网站建设面试程序员不是做网站的