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

申请网站建设的报告wordpress搭建内网导航

申请网站建设的报告,wordpress搭建内网导航,包装设计公司排行,做网站每年需付费吗1. AOP的实现方式 使用AspectJ的编译器来改动class类文件实现增强(使用不广泛) ----- 编译阶段 这种对class类文件增强的, 也可以增强static静态方法, 而通过代理方式就无法实现静态方法的增强 可通过查看编译后class文件反编译后的java代码验证 agent增强(使用不广泛) ----- 类…1. AOP的实现方式 使用AspectJ的编译器来改动class类文件实现增强(使用不广泛) ----- 编译阶段 这种对class类文件增强的, 也可以增强static静态方法, 而通过代理方式就无法实现静态方法的增强 可通过查看编译后class文件反编译后的java代码验证 agent增强(使用不广泛) ----- 类加载阶段 这种方式的增强也会使得代理类在内部自己调用自己的方法也获得增强, 原因是这种方式是通过类加载阶段进行的增强, 在通过this.xxFunc()调用自己本类的方法也是触发代理类的方法。 可通过arthas等工具查看jvm内存中增强后的类的反编译后的java代码验证 Proxy代理方式实现AOP(绝大多数的选择) JDK 代理 (只能代理实现了接口的类, 而且也只能代理那些接口方法, 代理类与目标类同级关系)CGLIB 代理 (能代理类和接口, 但该类或代理的方法不能使用final修饰, 因为是基于继承进行增强的, 代理类与目标类是父 / 子 关系) 代理创建的两个时机: 初始化之后实例创建之后, 依赖注入之前(有循环依赖时), 并暂存于二级缓存 earlySingletonObjects JDK实现的代理: public class JdkProxyDemo {interface Foo{void foo();}// 将被用作jdk代理的实例类static class Target implements Foo{Overridepublic void foo() {System.out.println(target foo);}// 这个方法无法被代理,因为不是来自接口的方法public void test(){System.out.println(test);}}// jdk代理 只能针对接口代理// cglib代理public static void main(String[] args) {// 目标对象Target target new Target();ClassLoader classLoader JdkProxyDemo.class.getClassLoader();//用来加载在运行期间动态生成的字节码Foo proxyInstance (Foo) Proxy.newProxyInstance(classLoader, new Class[]{Foo.class}, new InvocationHandler() {Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println(before...);// 目标.方法(参数)// method.invoke(proxy, args); 错误写法, 这里的proxy代表代理类自身, 传入proxy会陷入无限循环Object result method.invoke(target, args);System.out.println(after...);return result;}});proxyInstance.foo();} }Cglib实现的代理: 注意: 在MethodInterceptor实现的intercept()方法中,传入了一个参数methodProxy, 通过该对象调用methodProxy.invoke(target, args)也能执行目标对象, 但其内部不是通过反射的方式。 public class CglibProxyDemo {static class Target{public void foo(){System.out.println(target foo);}}public static void main(String[] args){Target target new Target();Target proxyInstance (Target) Enhancer.create(Target.class, new MethodInterceptor() {Overridepublic Object intercept(Object proxy, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println(before...);Object result method.invoke(target, args); //Spring使用的方式//Object result methodProxy.invoke(target, args); 非反射方式调用, 而且可以不用目标就调用System.out.println(after...);return result;}});proxyInstance.foo();} }2.Spring中的两种切面 Aspect: 高级切面, 可以包含多组通知和切面 Advisor: 低级切面, 适合框架内部使用, 只有一个通知和一个切面 Spring在处理这两个切面时, Aspect切面最终还是转为Advisor 两种方式使用示例: public class AspectDemo {public static void main(String[] args) {GenericApplicationContext context new GenericApplicationContext();context.registerBean(aspect1, Aspect1.class);context.registerBean(config, Config.class);context.registerBean(ConfigurationClassPostProcessor.class);context.refresh();for (String beanDefinitionName : context.getBeanDefinitionNames()) {System.out.println(beanDefinitionName);}}static class Target1{public void foo(){System.out.println(target1 foo);}}static class Target2{public void bar(){System.out.println(target bar);}}//高级切面,AspectAspectstatic class Aspect1{Before(execution(* foo()))public void before(){System.out.println(aspect1 before...);}After(execution(* foo()))public void after(){System.out.println(aspect1 after...);}}//低级切面, 由一个切点(AspectJExpressionPointcut)和一个通知(MethodInterceptor)组成Configurationstatic class Config{Beanpublic Advisor advisor3(MethodInterceptor advice3){AspectJExpressionPointcut pointcut new AspectJExpressionPointcut();pointcut.setExpression(execution(* foo()));return new DefaultPointcutAdvisor(pointcut , advice3);}Beanpublic MethodInterceptor advice3(){return new MethodInterceptor() {Overridepublic Object invoke(MethodInvocation methodInvocation) throws Throwable {System.out.println(advice3 before...);Object result methodInvocation.proceed();System.out.println(advice3 after...);return result;}};}} }
http://www.hkea.cn/news/14500233/

相关文章:

  • 南昌百度推广优化排名徐州专业网站seo
  • 用wordpress建仿站dtu网站开发
  • wordpress非代码方式添加备案号seo的含义
  • 个人网站备案需要哪些材料免费微网站有哪些
  • 网站建设哪便宜vps试用30天
  • 网页设计和网站开发的区别百度竞价的定义
  • 网站 视觉冲击深圳建设集团有限公司地址
  • 做汽车团购的网站建设网站做全局搜索
  • 深色网站常用的网页编辑软件有哪些
  • 网站维保方法珠海建设信息网站
  • 在公司网站建设会议上的汇报建设厅网站装修合同模板
  • 浙江建设厅网站首页wordpress固定链接打不开
  • 郑州官网首页aso优化技巧
  • 网站建设中最基本的决策光大国际建设公司官网
  • 企业网站设计与推广化妆品电子商务网站建设策划书
  • php响应式个人博客网站设计如何查询网站的空间商
  • 关于网站首页建设的文章农产品电子商务网站建设要求
  • 临沂建网站哪家好网站建设 局部放大镜功能
  • 网站建设会犯法吗wordpress插件怎么安装
  • 网站推广途径有哪些手机编辑html的工具
  • 关于vi设计的网站一款非常不错的seo网站优化公司源码
  • 基于php的家具公司网站网站建设一般需要多久
  • 网站的主要功能松山湖网站建设
  • 安徽建设监理协会网站网站设计中新闻版块怎么做
  • 污水处理厂网站建设装修公司室内装饰
  • wordpress网站被黑wordpress 搜索功能
  • 国外自助建站免费建站平台专业的网站建设企业
  • 一般网站后台地址2021国内最好用免费建站系统
  • 在网站里文本链接怎么做做网站时如何确定网站主题
  • 2018年政务公开与网站建设总结app 网站开发团队人员配置