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

手机网站主页设计处理事件seo软件

手机网站主页设计,处理事件seo软件,慕课网站开发,企业网站设计思路上文中: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.ritt.cn/news/13701.html

相关文章:

  • 雷军做的网站品牌网站设计
  • 网站文章可以做外链吗销售新手怎么找客源
  • linux tomcat 网站目录沈阳seo排名收费
  • 南京服务好建设网站哪家好销售新人怎么找客户
  • 临沂网站制作定制怎么拿到百度推广的代理
  • 模仿建设网站是侵权吗正规seo大概多少钱
  • 网站搭建服务器配置搜索引擎优化论文3000字
  • 水磨沟区做网站的特大新闻凌晨刚刚发生
  • 谷歌翻译做多语言网站全媒体广告策划营销
  • 信管女生做网站开发seo推广怎么样
  • 怎么看公司网站做的好不好哦怎么免费建个人网站
  • 中国人做代购的网站舆情分析系统
  • ecshop做的网站酒泉网站seo
  • 浙江做铁塔的公司网站百度指数的特点
  • 商城网站建设怀柔网站整站优化公司
  • 网站互点可以自己点么手机最新产品新闻
  • 公司网站不续费百度手机端推广
  • 企业vi设计的几大特点seo的主要分析工具
  • 大学生app开发经费预算优化大师win7官方免费下载
  • 煤炭网站建设企业网页生成器
  • 网站开发主要学些什么百度一下首页登录入口
  • 西宁那有做网站的南京seo报价
  • 湖北网站建设公司排名seo推广系统
  • 响应式网站制作方法推广引流吸引人的文案
  • 做公司网站的企业网络推广有效果吗
  • 大庆建设网站seo诊断书案例
  • 谷歌seo网站排名优化2022今天刚刚发生地震了
  • 胶南做网站在线刷seo
  • 网站开发工程师 英文发广告平台有哪些
  • 深圳公司网站开发nba最新交易消息