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

手机网站制作优化免费个人网站建设

手机网站制作优化,免费个人网站建设,wordpress可复制代码高亮,韩雪个人网站上文中:https://blog.csdn.net/qq_26437925/article/details/145241149 大致了解了spring aop的代理的实现,其实就是有个BeanPostProcessor代理了bean对象。 本文直接编写最简单的代码直观感受下 bean A: Service public class A {public A() {System.…

上文中:https://blog.csdn.net/qq_26437925/article/details/145241149 大致了解了spring aop的代理的实现,其实就是有个BeanPostProcessor代理了bean对象。


本文直接编写最简单的代码直观感受下

bean A:

@Service
public class A {public A() {System.out.println("A()");}public void say(){System.out.println("say A");}
}
  • beanPostProcessor
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Service;import java.lang.reflect.Method;@Service
public class ABeanPostProcessor implements BeanPostProcessor {@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {if (beanName.equals("a")) {System.out.println("a BeanPostProcessor postProcessAfterInitialization");return getProxy(bean);}return bean;}public Object getProxy(Object targetObject) {Enhancer enhancer = new Enhancer();Class<?> superClass = targetObject.getClass();enhancer.setSuperclass(superClass);MethodInterceptor interceptor = new MethodInterceptor() {@Overridepublic Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {System.out.println("cglib before...");Object res = methodProxy.invokeSuper(o, objects);return res;}};enhancer.setCallback(interceptor);Object targetProxy = enhancer.create();return targetProxy;}
}

基于cglib代理

<dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version>
</dependency>
  • config类不用EnableAspectJAutoProxy了
@Configuration
@ComponentScan("com.aop.dependency")
public class ConfigOne {
}
  • 测试类
@Test 
public void test() throws Exception {ApplicationContext ctx =new AnnotationConfigApplicationContext(ConfigOne.class);A a = (A) ctx.getBean("a");a.say();((AnnotationConfigApplicationContext) ctx).close();
}

测试输出
在这里插入图片描述

方法执行的代理输出正常

因为Cglib是用父类继承,新增了一个完整的class字节码。所以可以看到A()构造函数执行了两次, 一次是spring bean生命周期的实例化,一次则是Cglib创建出代理对象执行的。

http://www.hkea.cn/news/8990/

相关文章:

  • 平台做的h5如何嫁接到网站网址大全浏览器主页
  • 自媒体是干什么的seo人工智能
  • 如何申请个人网站电商如何推广自己的产品
  • 做的好的营销型网站有哪些新的网站怎么推广
  • 苏州高新区建设局网站管网seo外链
  • 小企业网站制作全部视频支持代表手机浏览器
  • 做网站宽高怎么决定域名怎么注册
  • 公司网站开发设计题目怎么写湖南正规关键词优化报价
  • 自助建站平台哪家好搜索引擎营销方法有哪些
  • 做娱乐网站需要哪些长沙营销推广
  • 松江大学城网站建设百度推广方案
  • wordpress顶插件网站关键词优化推广哪家好
  • 网站建设在哪个软件下做电商网站建设
  • 东营网站客户服务中心公关公司一般收费标准
  • 网站asp怎么没有菜单栏石家庄seo培训
  • 南京公司网站建设com域名多少钱一年
  • 做网站赚钱不短视频seo是什么
  • 做虚假网站犯法吗河北百度推广电话
  • 成都医院做网站建设seo网站推广优化就找微源优化
  • 施工企业管理费网站优化系统
  • 网页编辑软件 排行seo渠道
  • 问答社交网站开发网站备案查询官网
  • 吉林市网站创意与建设企业如何网络推广
  • 高权重网站怎么做网站推广文章
  • 一个做问卷调查的网站青岛网站
  • 成品ppt网站河南做网站优化
  • 微信开放平台注册流程上海知名seo公司
  • 自己动手做衣服网站网络广告怎么做
  • 个人做网站开发指标百度竞价开户联系方式
  • 搜索引擎的优化和推广seo排名优化教学