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

外企网站建设公司秦皇岛市教育局官网

外企网站建设公司,秦皇岛市教育局官网,太仓建设局网站,人力资源公司注册需要什么条件AOP概念 AOP是Aspect Oriented Programming的缩写#xff0c;即『面向切面编程』。它和我们平时接触到的OOP都是编程的不同思想#xff0c;OOP#xff0c;即『面向对象编程』#xff0c;它提倡的是将功能模块化#xff0c;对象化#xff0c;而AOP的思想#xff0c;则不太…AOP概念 AOP是Aspect Oriented Programming的缩写即『面向切面编程』。它和我们平时接触到的OOP都是编程的不同思想OOP即『面向对象编程』它提倡的是将功能模块化对象化而AOP的思想则不太一样它提倡的是针对同一类问题的统一处理当然我们在实际编程过程中不可能单纯的安装AOP或者OOP的思想来编程很多时候可能会混合多种编程思想大家也不必要纠结该使用哪种思想取百家之长才是正道 AspectJ AspectJ实际上是对AOP编程思想的一个实践当然除了AspectJ以外还有很多其它的AOP实现例如ASMDex但目前最好、最方便的依然是AspectJ。 Advice(通知) 注入到class文件中的代码。典型的 Advice 类型有 before、after 和 around分别表示在目标方法执行之前、执行后和完全替代目标方法执行的代码。 除了在方法中注入代码也可能会对代码做其他修改比如在一个class中增加字段或者接口。 Joint point连接点 程序中可能作为代码注入目标的特定的点例如一个方法调用或者方法入口。 Pointcut切入点 告诉代码注入工具在何处注入一段特定代码的表达式。例如在哪些 joint points 应用一个特定的 Advice。切入点可以选择唯一一个比如执行某一个方法也可以有多个选择比如标记了一个定义成DebguTrace 的自定义注解的所有方法。 AspectJ提供不同类型的通知分别为 Before 前置通知,相当于BeforeAdvice AfterReturning 后置通知,相当于AfterReturningAdvice Around 环绕通知,相当于MethodInterceptor AfterThrowing异常抛出通知,相当于ThrowAdvice After 最终final通知,不管是否异常,该通知都会执行 1:引入aspectj依赖 dependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion1.9.6/version/dependency 2:新建一个User类 public class User {public void add(){System.out.println(add方法);} }3:新建一个UserProxy类被增强的一个类 Before方法上加上Before注解配置切入点表达式 *表示所有修饰符类型后面加一个空格 接着后面上全路径和方法名最后..表示参数 Component Aspect //表示生成一个代理对象 public class UserProxy {//前置通知//Before注解表示作为前置通知Before(execution(* com.example.wzy.demo.aop.User.add(..)))public void before(){System.out.println(before方法);} }4:新建一个bean9.xml 首先加上context和aop的名称空间 接着配置开启组件扫描 context:component-scan base-packagecom.example.wzy.demo.aop/context:component-scan com.example.wzy.demo.aop是全路径表示扫描这个包 还有添加 aop:aspectj-autoproxy/aop:aspectj-autoproxy 表示开启Aspect生成代理对象就是去类上找有没有Aspect注解有的话就把这个对象生成一个代理对象 5:最后添加一个测试类 6:输出结果这就是前置通知在方法执行之前执行 Component Aspect //表示生成一个代理对象 public class UserProxy {//前置通知//Before注解表示作为前置通知Before(execution(* com.example.wzy.demo.aop.User.add(..)))public void before() {System.out.println(before方法);}//后置通知最终通知方法执行之后执行有异常也会执行After(execution(* com.example.wzy.demo.aop.User.add(..)))public void after() {System.out.println(after方法);}//后置通知返回通知方法返回结果之后执行有异常不执行AfterReturning(execution(* com.example.wzy.demo.aop.User.add(..)))public void afterReturning() {System.out.println(AfterReturning);}//异常通知AfterThrowing(execution(* com.example.wzy.demo.aop.User.add(..)))public void afterThrowing() {System.out.println(AfterThrowing);}//环绕通知Around(execution(* com.example.wzy.demo.aop.User.add(..)))public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {System.out.println(环绕通知之前);proceedingJoinPoint.proceed();//被增强的方法执行System.out.println(环绕通知之后);} }优化 相同的切入点抽取下面的都是重复的可以提取出来如下图 execution(* com.example.wzy.demo.aop.User.add(..)) 比如对User的add方法需要两个增强类那么使用 Order()注解可以里面的数字越小表示先执行 看下执行结果 使用下xml配置文件配置 新建Book类和BookProxy类 public class Book {public void buy(){System.out.println(buy*********);} }public class BookProxy {public void before(){System.out.println(before**********);} }2:新建bean.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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd!--名称空间--!--创建对象--bean idbook classcom.example.wzy.demo.aopxml.Book/beanbean idbookProxy classcom.example.wzy.demo.aopxml.BookProxy/bean!--配置aop增强--aop:config!--切入点--aop:pointcut idp expressionexecution(* com.example.wzy.demo.aopxml.Book.buy(..))/!--配置切面--aop:aspect refbookProxy!--增强作用在具体的方法上--aop:before methodbefore pointcut-refp//aop:aspect/aop:config /beans 新建测试类 Testpublic void test2(){ApplicationContext ac new ClassPathXmlApplicationContext(bean10.xml);Book book ac.getBean(book, Book.class);book.buy();} 执行结果 配置的是前置通知所以先输出before再输出buy
http://www.huolong8.cn/news/177430/

相关文章:

  • 江苏省城乡住房建设厅网站网络品牌营销推广
  • 档案网站建设优秀代表网站建设:宏智网络科技
  • 国内网站建设 必须实名认证3d建模教程
  • 东莞服装网站建设个人主页免费
  • 福州商城网站破解织梦做的网站
  • 潍坊兆通网站建设北京快速建站制作公司
  • 重庆网站seo建设哪家好惠阳做网站
  • 网站建设的空间是什么西安企业建站费用
  • 网站建设的教学视频wordpress最大文件
  • 婚纱网站怎么做seo网站微信推广方案
  • 郑州七七网站建设做设计网站的工作内容
  • 网站seo公司哪家好全屋定制设计师培训
  • 学校网站怎么做贵阳网站建设方案维护
  • 晋城建设公司网站谷歌推广效果好吗
  • 在线图片编辑器官网网络优化分为
  • 广东省建设网站天津市做网站的公司有哪些
  • 网站建设的重点是什么漂亮的flash网站
  • 学网站建设的好处东莞证券
  • 武冈网站建设哪家好成品网站 免费试用
  • 邯郸网站建设包括哪些wordpress 国内 优化
  • 网站推广专家东莞网站平台后缀
  • 怎样建设个人影视网站市场监督管理局查询系统
  • php做电商网站开题报告做网站是什么公司
  • 房山手机网站建设威海网站制作怎么样
  • 网站前端和后端连云港市网站优化
  • 山西省建设监理协会网站企业网站互动交流模块
  • 提供邢台网站优化邯郸网站优化
  • 免费在线观看电影电视剧网站免费咨询海报
  • 谷歌网站怎么做推广哪个网站的地图可以做分析图
  • 做公司网站和设计logo网站网络的可用性