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

高端房产网站建设上传空间网站

高端房产网站建设,上传空间网站,如何才能让自己做的网站百度能搜,清理网站数据库目录 想要彻底理解AOP#xff0c;我觉得你的先要了解框架的模块化思想#xff0c;为此先记录框架在讲AOP 什么是java框架#xff1f;为什么要出现框架#xff1f; 我总结以下七点来讲述和帮助理解java框架思想 什么是AOP#xff1f; 如何理解上面这句话呢#xff1…目录 想要彻底理解AOP我觉得你的先要了解框架的模块化思想为此先记录框架在讲AOP 什么是java框架为什么要出现框架 我总结以下七点来讲述和帮助理解java框架思想  什么是AOP 如何理解上面这句话呢 最重要的来了什么是面向切面编程? 我们现在将横向的关注点剥离成了一个一个的切面呢我们如何用代码把切面织入进去呢 呢么现在就有了新的问题什么是AspectJ框架他在AOP编程中起到了什么作用 知道了概念之后我们开始使用 Spring AOP的实现原理 最后概念化AOP 想要彻底理解AOP我觉得你的先要了解框架的模块化思想为此先记录框架在讲AOP 什么是java框架为什么要出现框架 在我开始接触java框架知识后我发现所谓的java框架就是把原本的一个整体分成了一小块一小块的部分有种模块化思想就是将分工变得更加明确专业的人负责专门的事让程序员更加专注于业务本身将什么事务操作、日志操作抽取出去模块化成一个小整体去专门负责做然后将这个小整体做好后像堆积木一样堆到事务该出现的位置然后让一块一块的小积木堆成一个搭积 我总结以下七点来讲述和帮助理解java框架思想  模块化思想 框架通常采用模块化设计将系统拆分成独立的功能模块。每个模块专注于特定的功能或关注点如数据库访问、事务管理、日志记录、安全性等。这种模块化思想使得系统更易于理解、扩展和维护。 分工明确 各个模块由专业的开发者或团队负责这样可以充分发挥每个人的专业技能。例如数据库模块由专门的数据库开发者负责日志模块由专门的日志开发者负责。这种分工使得开发过程更加高效同时降低了系统的复杂性。 抽象和封装 框架通过抽象和封装隐藏了底层的复杂性提供了高层次的接口供开发者使用。这样开发者在使用框架时不需要关心底层的实现细节只需关注业务逻辑的实现。这种抽象和封装有助于提高代码的可读性和可维护性。 面向切面编程AOP AOP 是一种重要的框架设计思想它允许将横切关注点cross-cutting concerns从主要业务逻辑中分离出来。例如事务管理、安全性、日志记录等关注点可以被模块化成切面然后通过AOP织入到业务逻辑中。这使得系统的关注点更加清晰同时避免了代码重复。 依赖注入DI 框架通常使用依赖注入来管理组件之间的依赖关系。这样开发者不需要手动创建和管理对象之间的关系而是由框架负责。DI提高了代码的灵活性和可测试性。 约定优于配置Convention over Configuration 框架倡导使用一些默认约定减少配置的复杂性。通过约定开发者只需要配置那些与默认约定不一致的部分减少了样板代码的编写提高了开发效率。 开放封闭原则 框架遵循开放封闭原则允许系统扩展而不需要修改已有的代码。新的功能通过扩展现有的模块或添加新的模块来实现而不是修改已有的代码。这种原则有助于保持系统的稳定性和可维护性。 框架就是为了让一个复杂代码的逻辑更加清晰分工更加明确 什么是AOP Spring有两个极其重要的核心概念一个是IOC/DI另一个就是AOP。呢么什么是AOP呢刚刚已经总结过了AOP 是一种重要的框架设计思想它允许将横切关注点cross-cutting concerns从主要业务逻辑中分离出来。例如事务管理、安全性、日志记录等关注点可以被模块化成切面然后通过AOP织入到业务逻辑中就好比搭积木。这使得系统的关注点更加清晰还增加了代码的复用性。 如何理解上面这句话呢 假设将我们编写的业务代码看成一个搭积木的过程我们将交叉业务看成一个个小积木当我们做完核心业务代码之后然后将做好的小积木像搭积木一样加入已经做好的小积木块这样就避免了我们程序员在编写主要业务逻辑时还要考虑数据库事务啊访问数据库啊等其他和业务无关的逻辑让我们程序员负责写订单生成的就只负责写订单生成负责写数据库访问的就只负责写数据库访问使的分工明确结构清晰最后拼在一起即可构成高楼大厦         这里的积木与积木之间是否能够拼在一起就能正常运行就涉及到解耦合思想了 看上面这张图我们将业务代码看成纵向的一个过程将和业务主要代码无关的代码如事务管理、安全性、日志记录等关注点可以被模块化成小积木块等需要这些的时候像刀一样横向的插入进去然而能够把一个整体抽象成模块化的思想就是AOP的主要思想 最重要的来了什么是面向切面编程? 我们把事务管理、安全性、日志记录等和主从业务无关的关注点看成一个一个的切面将他们从主要业务逻辑中分离出来。然后在需要用到他们的地方再将他们织入进去当然这需要完全的解耦合 我们现在将横向的关注点剥离成了一个一个的切面呢我们如何用代码把切面织入进去呢 呢我们就要说到spring对AOP的实现技术AspectJ框架在实际开发中都是SpringAspectJ来实现AOP。 常用的Spring对AOP的实现包括以下2种方式 第一种方式Spring框架结合AspectJ框架实现的AOP基于注解方式。第二种方式Spring框架结合AspectJ框架实现的AOP基于XML方式。 依赖如下 dependencygroupIdorg.springframework/groupIdartifactIdspring-aspects/artifactIdversion6.0.0-M2/version /dependency 呢么现在就有了新的问题什么是AspectJ框架他在AOP编程中起到了什么作用 AspectJ是一个基于Java的面向切面编程AOP框架它提供了一种强大的方式来实现横切关注点的模块化。我们刚刚不是已经将关注点剥离成了切面吗呢JVM怎么知道你就是切面呢他怎么知道这个切面要放到哪里呢还有他怎么就知道代码执行到一半还要先执行切面呢AspectJ的作用就出来了 在AOP中AspectJ主要起到以下作用 切面定义 AspectJ允许开发者定义切面切面是横切关注点的模块化单元。切面通常包含一组通知advice以及切点pointcut的定义。 通知Advice 通知是切面中的代码块它定义了在目标方法的哪个时机执行。AspectJ支持五种类型的通知前置通知Before advice、后置通知After advice、返回通知After-returning advice、异常通知After-throwing advice和环绕通知Around advice。 切点Pointcut 切点定义了在目标类中的哪些位置执行通知。AspectJ允许开发者使用表达式来定义切点从而选择性地将通知应用到目标类的特定方法或代码块。 连接点Join point 连接点是在程序执行过程中可以插入切面的点。AspectJ将切点看作连接点并在连接点上执行相应的通知。 织入Weaving 织入是将切面与目标类或对象关联的过程。AspectJ使用编译时织入、类装载时织入和运行时织入等方式来将切面织入到目标代码中。 增强Introduction AspectJ允许通过引入Introduction在不修改目标类代码的情况下为类添加新的方法或字段。这对于为已有的类添加新的行为非常有用。 类型匹配和织入控制 AspectJ提供了丰富的类型匹配和织入控制的功能允许开发者精确地指定切面的应用范围。 总体而言AspectJ通过定义切面、通知、切点等概念使得开发者能够以一种更模块化和清晰的方式处理横切关注点。通过AspectJ可以将与业务逻辑无关的关注点如日志、事务、安全性等独立出来使得代码更易维护、扩展和理解。 知道了概念之后我们开始使用 我们引入一个案例一个订单生成业务我们需要再订单生成方法执行前织入一个切面MyAspect 添加一些增强代码 // 目标类 service public class OrderService {// 目标方法public void generate(){System.out.println(订单已生成);} } 切面类 // 切面类 Aspect Component public class MyAspect {// 切点表达式Before(execution(* com.lypnode.spring.service.OrderService.*(..)))// 这就是需要增强的代码通知public void advice(){System.out.println(我是一个通知);} } 使用了AspectJ框架中的Aspect这个注解之后就表明这个类是个切面类 spring.xml文件: ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:aophttp://www.springframework.org/schema/aopxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd!--开启组件扫描--context:component-scan base-packagecom.lypnode.spring.service/!--开启自动代理--aop:aspectj-autoproxy proxy-target-classtrue/ /beans aop:aspectj-autoproxy proxy-target-classtrue/ 开启自动代理之后凡事带有Aspect注解的bean都会生成代理对象。 proxy-target-classtrue 表示采用cglib动态代理。 proxy-target-classfalse 表示采用jdk动态代理。默认值是false。即使写成false当没有接口的时候也会自动选择cglib生成代理类。 关于cglib动态代理和jdk动态代理下面我们会说 测试类 public class AOPTest {Testpublic void testAOP(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring.xml);OrderService orderService applicationContext.getBean(orderService, OrderService.class);orderService.generate();} } 运行结果  通过上面的总结和代码我么可以知道AOP底层是调用了动态代理技术的呢么就会生成代理类可见上面的代码中看似在调用orderService类实则调用的是动态生成的代理类 至于代理类生成看我另一篇文章 【Spring篇】JDK动态代理-CSDN博客 Spring AOP的实现原理 Spring的AOP实现原理其实很简单就是通过动态代理实现的。Spring AOP 采用了两种混合的实现方式JDK 动态代理和 CGLib 动态代理。 JDK动态代理Spring AOP的首选方法。 每当目标对象实现一个接口时就会使用JDK动态代理。目标对象必须实现接口CGLIB代理如果目标对象没有实现接口则可以使用CGLIB代理。 Spring默认使用JDK的动态代理实现AOP类如果实现了接口Spring就会使用这种方式实现动态代理。当然你也可以自己制定 proxy-target-classtrue 表示采用cglib动态代理。 proxy-target-classfalse 表示采用jdk动态代理。默认值是false。即使写成false当没有接口的时候也会自动选择cglib生成代理类。 最后概念化AOP AOP 是一种重要的框架设计思想动态代理是其实现机制之一。在 AOP 中可以通过动态代理将横切关注点与核心业务逻辑分离使代码更易维护和理解。它允许将横切关注点cross-cutting concerns从主要业务逻辑中分离出来。例如事务管理、安全性、日志记录等关注点可以被模块化成切面然后通过AOP织入到业务逻辑中。这使得系统的关注点更加清晰同时避免了代码重复。 AOP可以拦截指定的方法并且对方法进行增强而且无需侵入到业务代码中使业务与非业务处理逻辑分离比如数据库访问、事务管理、日志记录、安全性等。这种模块化思想使得系统更易于理解、扩展和维护。 将系统拆分成独立的功能模块。每个模块专注于特定的功能或关注点如数据库访问、事务管理、日志记录、安全性等。这种模块化思想使得系统更易于理解、扩展和维护。 这是我对AOP面向切面编程的初步理解内容有点复杂逻辑有点乱后续还会修改文章
http://www.zqtcl.cn/news/947562/

相关文章:

  • 网站主机名wordpress主题修改底部版权
  • 网站官网怎么做龙岩iot开发福建小程序建设
  • 哪个学校设有网站开发专业北京有哪些网站公司
  • 做网站需要的带宽上行还是下行湖南竞网科技有限公司
  • 帝国cms企业门户网站仿站视频教程 网盘互联网金融p2p网站建设
  • 个人网站备案涉及支付宝做二手的网站都有哪些
  • 如何给网站做宣传导航栏网页怎么制作
  • 返利网站建设高校精神文明建设网站
  • 河北百度推广seoseo全网优化指南
  • 网站建设网页开发一个类引用另一个类的方法
  • 第四章第二节网站建设的教学设计云南网站建设一度科技公司
  • php 搭建手机网站建e网app下载
  • 河北手机版建站系统价格微信怎么开店铺小程序
  • 中国建设教育网官网是什么网站潮州seo建站
  • 如何做个购物网站学校网站设计的目的
  • 建设部网站158号文件1688官网app
  • 临沂科技网站建设在线网页截图工具
  • 聊城网站推广软件简单网页制作训练
  • wordpress去除文章作者seo核心技术排名
  • 网站建设黄页免费观看wordpress所有文章
  • 企业整站优化沈阳建设学院
  • 网站怎么做弹框河北省建设注册中心网站首页
  • 大连哪里有手机自适应网站建设网站开发层次
  • 网站首页的浮窗怎么做美食网站程序
  • 淮北网站建设建设银行福州分行招聘网站
  • c 网站开发 pdf济南集团网站建设报价
  • 做网站找哪家公司好中国网络优化推广
  • 创建网站目录结构应遵循的方法dz旅游网站模板
  • 我看别人做系统就直接网站下载软件外贸物流流程
  • 手机微信网站南县网站定制