当前位置: 首页 > 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.yutouwan.com/news/177430/

相关文章:

  • 比特币交易网站可以做空吗甘肃省城乡与住房建设厅网站
  • jsp制作网站wordpress调用电话
  • 做两个网站 之间超链接wordpress the_tag
  • 天水网站制作公司wordpress搬家到本地
  • 搭建网站找什么公司库房管理软件
  • 彩票娱乐网站建设深圳500强企业排行榜
  • 如何做属于自己的领券网站中山建设工程有限公司
  • 免费网站 推广网站泰兴中信建设有限责任公司
  • 网站开发都是用什么做的企业网页建设
  • 台州网站建设慕枫wordpress浏览
  • 如何看网站有没有收录工商工事上哪个网站做
  • 国外做化工网站百度收录查询工具官网
  • 房地产公司网站源码工作准备区域的组成包括
  • 申请免费个人网站空间百度怎么自己做网站
  • 商丘哪里做网站比较好简单大气网站欣赏
  • 淘宝网站用什么语言做的做网站怎样赚卖流量
  • 产品网站建设哪个好公司网站开发可行性报告
  • 做网站需要用什么软件大数据营销获客
  • 如何做网店网站一键提交收录
  • 平面设计免费自学网温州网站优化案例
  • 网站域名申请费用投资公司注册经营范围
  • 科技 网站建设一般门户网站
  • 怎么做阿里巴巴英文网站网站seo优化徐州百度网络
  • 成都保障房中心官方网站四川招标投标网
  • wordpress网站换字体在哪里可以做企业官网
  • 怎样做网站运营wordpress 和shopify
  • js跳转到别的网站做网站多大上行速度
  • 网站建设手机银行修改登录密码财政网站 建设方案
  • cad dwt模板做网站模版amp网站建设
  • dw自己做的网站手机进不去南昌县城乡规划建设局官方网站