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

海口商城网站建设龙江外贸“半年报”

海口商城网站建设,龙江外贸“半年报”,想做一个自己的网站怎么做,网站建设属于什么行业Spring-AOP 现象#xff1a;接口实现类中有两个#xff0c;doMethod1()调用了doMethod2(),此时对于AOP#xff0c;如果现在外部对象调用doMethod1()方法的时候#xff0c;会发现只有doMethod1()方法执行被拦截,AOP生效#xff0c;而doMethod1()内部调用doMethod2()时并没…Spring-AOP 现象接口实现类中有两个doMethod1()调用了doMethod2(),此时对于AOP如果现在外部对象调用doMethod1()方法的时候会发现只有doMethod1()方法执行被拦截,AOP生效而doMethod1()内部调用doMethod2()时并没有被拦截外部对象单独调用doMethod1()时会被拦截。 Service public class JdkProxyDemoServiceImpl implements IJdkProxyService {Overridepublic void doMethod1() {doMethod2()System.out.println(JdkProxyServiceImpl.doMethod1());}Overridepublic String doMethod2() {System.out.println(JdkProxyServiceImpl.doMethod2());return hello world;} }分析 拦截器的实现原理就是动态代理实现AOP机制。Spring的代理实现有两种一是基于 JDK Dynamic Proxy 技术而实现的二是基于 CGLIB 技术而实现的。如果目标对象实现了接口在默认情况下Spring会采用JDK的动态代理实现AOP //JDK动态代理生成的JdkProxyDemoServiceImpl 的代理类 Service public class JdkProxyDemoServiceProxy implements IJdkProxyService {private IJdkProxyService iJdkProxyService;public void setIJdkProxyService(IJdkProxyService iJdkProxyService) { this.iJdkProxyService iJdkProxyService; } public void doMethod1() {//前置通知doBefore() iJdkProxyService.doMethod1();}public String doMethod2() {//前置通知doBefore() return iJdkProxyService.doMethod2();}private void doBefore() { System.out.println( 前置通知...); } }当使用时从IOC容器中获取的Bean对象都是代理对象而不是Bean对象本身由于this关键字应用的并不是该Bean对象的对象而是其本身因此此时Spring AOP是不能拦截到这些被嵌套调用的方法的。 //当获取Bean对象使用时//spring容器创建代理对象 IJdkProxyService iJdkProxyService new IJdkProxyServiceImpl();JdkProxyDemoServiceProxy serviceProxy new JdkProxyDemoServiceProxy () serviceProxy.setIJdkProxyService(iJdkProxyService); IJdkProxyService iJdkProxyService (IJdkProxyService) serviceProxy;iJdkProxyService.doMethod1();解决 1、修改类把内部自调用改掉。 2、将this.doMethod2()替换为((IJdkProxyService ) AopContext.currentProxy()).doMethod2()此时需要修改spring的aop配置 // 指示是否创建基于子类(CGLIB)的代理而不是创建基于标准Java接口的代理。 默认值是{code false}。 EnableAspectJAutoProxy(proxyTargetClass true) 3、使用SpringUtil.getBean(iJdkProxyService ).doMethod2() Component public class SpringUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;public SpringUtil springUtil() {return new SpringUtil();}Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {if(SpringUtil.applicationContext null) {SpringUtil.applicationContext applicationContext;}}//获取applicationContextpublic static ApplicationContext getApplicationContext() {return applicationContext;}//通过name获取 Bean.public static Object getBean(String name){return getApplicationContext().getBean(name);}//通过class获取Bean.public static T T getBean(ClassT clazz){return getApplicationContext().getBean(clazz);}//通过name,以及Clazz返回指定的Beanpublic static T T getBean(String name,ClassT clazz){return getApplicationContext().getBean(name, clazz);}}
http://www.zqtcl.cn/news/316832/

相关文章:

  • 淮安企业网站制作校园网网络规划与设计方案
  • html完整网站开发自媒体平台账号注册
  • 厦门seo网站网站空间 群集
  • 青岛网站推广方案营销自动化平台
  • 管理信息系统与网站建设有什么区别python版wordpress
  • 济南市建设行政主管部门网站公众号登录入口官网
  • 深圳苏州企业网站建设服务企业做网站需要什么条件
  • 电脑什么网站可以做长图攻略公众号 微网站开发
  • 网站核检单怎么用小皮创建网站
  • 企业网站托管平台有哪些烟台高新区建设局网站
  • 石家庄网站做网站和县网页定制
  • 网站个人备案和企业备案潍坊公司注册网站
  • 建个网站的流程互联网裁员
  • 设置网站模板汉口网站建设公司
  • 网站对一个关键词做排名怎么做网站建设 图纸网
  • 什么网站比较吸引流量网页设计代码td
  • 克隆网站怎么做后台wordpress网站缩
  • 仁怀哪儿做网站泰安市建设局
  • 做网站和编程有关系吗手机怎么做电子书下载网站
  • 网站做关键词排名网站快速排名的方法
  • 有网站模板如何预览泉州app开发
  • 网站自助建站系统重庆皇华建设集团有限公司网站
  • 云速成美站做网站好吗汕头制作网站
  • 搜狗搜索网站提交入口在哪里做卖车网站
  • 河南省百城建设提质网站新人怎么做电商
  • 建设机械网站制作创建个人网站教案
  • 无锡网站推广装修风格大全2023新款
  • 在线设计logo免费网站如何在网站上添加qq
  • 高端网站建设哪里好网站建设与管理案例教程
  • 云南专业网站建设上海百度移动关键词排名优化